Java Apache DefaultHttpClient:如何设置每个路由的最大总连接数和默认最大连接数
我使用单例Java Apache DefaultHttpClient:如何设置每个路由的最大总连接数和默认最大连接数,java,apache-httpclient-4.x,Java,Apache Httpclient 4.x,我使用单例DefaultHttpClient每秒执行十几个或更多的并行HTTP请求。我想知道如何以智能方式为下面代码中的“PoolgClientConnectionManager”设置值x(最大总连接数)和y(默认每个路由的最大连接数)。 我希望poolgclientconnectionmanager能够帮助我,以便在出现负载峰值或负载比平时低很多时,我不必更改这些值。我能做什么?或者我必须将值设置为总是比我实际需要的值更大的值吗 编辑:说poolgclientconnectionmanager
DefaultHttpClient
每秒执行十几个或更多的并行HTTP请求。我想知道如何以智能方式为下面代码中的“PoolgClientConnectionManager”设置值x(最大总连接数)和y(默认每个路由的最大连接数)。我希望poolgclientconnectionmanager能够帮助我,以便在出现负载峰值或负载比平时低很多时,我不必更改这些值。我能做什么?或者我必须将值设置为总是比我实际需要的值更大的值吗
编辑:说
poolgclientconnectionmanager.setMaxTotal(Integer.MAX_VALUE)
是个好主意吗?从4.2版开始,可以使用BackoffManager根据使用持久连接的反馈动态调整可用连接池的大小
您应该知道您的峰值负荷是多少,并相应地调整最大负荷。请记住,仅仅因为您设置了任意大的max并不能保证底层客户机能够承受非常高的并发负载。连接管理器无法为您完成所有工作。因此,明天我将在硬件更好的服务器上部署软件,然后我必须重新估计连接池大小?!您可以将这些“调优”变量外部化到特定于环境的配置文件中,并在程序启动时读取它们。
...
PoolingClientConnectionManager poolingClientConnectionManager =
new PoolingClientConnectionManager(sr, 20, TimeUnit.SECONDS);
poolingClientConnectionManager.setMaxTotal(x);
poolingClientConnectionManager.setDefaultMaxPerRoute(y);
return new DefaultHttpClient(poolingClientConnectionManager, new BasicHttpParams());