使用PoolingHttpClientConnectionManager时的随机INFO类型NoHttpResponseException

时间:2018-11-16 00:36:13

标签: java apache-httpclient-4.x

我的连接管理器看起来像这样:

PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
connManager.setMaxTotal( this.clientMaxTotal );
connManager.setDefaultMaxPerRoute( this.clientDefaultMaxPerRoute );
// start monitor thread
IdleConnectionMonitorProcessor monitorProcessor = new IdleConnectionMonitorProcessor( connManager );
Thread monitorThread = new Thread(monitorProcessor);
monitorThread.start();

我大约有50个线程使用连接管理器,每个线程都有自己的http客户端。客户端设置为共享同一管理员。我正在呼叫四个域,其中三个域工作正常,没有任何问题。但是,在对第四个域进行调用时,出现了随机的“目标服务器无法响应”的情况,并且httpclient将在工作之前进行一次或两次重试。

INFO 17723 --- [      Thread-38] o.apache.http.impl.execchain.RetryExec   : I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {s}->https://fourth_domain:443: The target server failed to respond
INFO 17723 --- [      Thread-38] o.apache.http.impl.execchain.RetryExec   : Retrying request to {s}->https://fourth_domain:443

我有什么办法可以解决重试错误? 我尝试过的一件事是使用setConnectionReuseStrategy( new NoConnectionReuseStrategy() )。是第四个站点关闭连接的速度太快了吗?

0 个答案:

没有答案