我正在使用单例 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/

10-14 12:18
查看更多