NoHttpResponseException是一个可重现的异常?

问题描述 投票:0回答:1

我们在客户端代码中实现了连接池,调用服务器在2.5mins后关闭(在响应头中发送Connection:close)一个连接,由于服务器的行为,我们有时会间歇性地得到NoHttpResponseException。由于服务器的行为,我们有时会间歇性地得到NoHttpResponseException。这种情况可能发生在高TPS或低TPS的情况下。

我们使用的是apache http客户端4.5.11版本。有一个 validateAfterInactivity 落入 PoolingHttpClientConnectionManager 默认设置为2000ms。但我想如果我们试图在2000ms的时间内获取连接,可能会得到同样的异常。

我们可以选择为validateAfterInactivity设置一个激进的值,但是我听说它可能会使每个请求的性能降低20到30ms。

重试这个异常是一个好的解决方案吗?

同样的上下文,我们是否可以在以下情况下重试 java.net.SocketException。连接重置 ?

@ok2c 这里有什么建议吗?

先谢谢你。

connection-pooling apache-httpclient-4.x nohttpresponseexception
1个回答
0
投票

NoHttpResponseException 对于idempotent方法,重试被认为是安全的。

然而,在你的特殊情况下,我会考虑将客户端连接的TTL(total to live)限制在2.5分钟,以匹配服务器端点的TTL。

© www.soinside.com 2019 - 2024. All rights reserved.