我正在使用单例 DefaultHttpClient
每秒发出大约十几个或更多的并行 HTTP 请求。我想知道如何以智能方式为下面代码中的“PoolingClientConnectionManager”设置值 x(最大总连接数) 和 y(每条路由的默认最大连接数)。
我希望 PoolingClientConnectionManager
能够帮助我,以便在出现负载峰值或负载比平时低得多的情况下不必更改这些值。我能做什么?或者我是否必须将值设置为始终大于我实际需要的值?
...
PoolingClientConnectionManager poolingClientConnectionManager =
new PoolingClientConnectionManager(sr, 20, TimeUnit.SECONDS);
poolingClientConnectionManager.setMaxTotal(x);
poolingClientConnectionManager.setDefaultMaxPerRoute(y);
return new DefaultHttpClient(poolingClientConnectionManager, new BasicHttpParams());
编辑:说
poolingClientConnectionManager.setMaxTotal(Integer.MAX_VALUE)
是个好主意吗? 最佳答案
从 4.2 版开始,可以使用 BackoffManager 来根据使用持久连接的反馈动态调整可用连接池的大小。
http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/AIMDBackoffManager.html
关于java - Apache DefaultHttpClient : How to set max. 总连接数和默认最大值。每条路线的连接数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13310490/