这是HTTP引起的异常,属于偶然发生异常。
org.apache.http.NoHttpResponseException: The target server failed to respond
复制代码
客户端可以检测到服务已经过期了,主动关闭。
追踪代码我们可以看到是 client 是从 HttpHeader 中读取 Keep-Alive: timeout=xx,如果没有读到就认为永不超时。
而 Nginx 配置的第二个参数就是这个,因此只要服务端将 keepalive_timeout 30s;改为 keepalive_timeout 30s 29s;即可,这里少 1s 为了防止网络延时造成的并发问题。
如果服务端不方便修改,那么第二方案是客户端这边修改,比较麻烦。
httpClient
。 jest closeIdleConnection keep alive
keep Alive
时间,调整 validateAfterInactivity 小于
keepAlive Time`,但这种方法依旧不能避免同时关闭。 Retry HttpClient disableAutomaticRetries
UrlConnection
; HttpClient nginx keepalive_timeout
PoolingHttpClientConnectionManager
; HttpClient
的 RetryHandler
; HttpClinet
,这不吸引人么?