我的连接管理器看起来像这样:
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() )
。是第四个站点关闭连接的速度太快了吗?