使用Apache PoolingClientConnectionManager时,例如:
PoolingClientConnectionManager cm = new PoolingClientConnectionManager();
cm.setMaxTotal(???);
HttpClient client = new DefaultHttpClient(cm);
什么被认为是一个很好的默认值?
Apache site here使用100
和其他地方的示例(stackoverflow.com/questions/13310490/apache-defaulthttpclient-how-to-set-max-total-connection-and-default-max-conn)我读到人们应该大致知道峰值负载是什么,并将其设置为。
那么在setMaxTotal(???)
中有一个很好的默认值吗?或者是否建议我们确定您的峰值是什么,并以此为基础?
如果是后者,确定峰值负荷的好方法是什么?
我通过此幻灯片显示 here 并看到默认值为10
,但您可以将其设置为0
并让好时光滚动(尽管如此显然否定了任何超时服务,有什么好的理由吗?)。我也碰巧浏览了oracle文档(docs.oracle.com/cd/E17904_01/web.1111/e13737/ds_tuning.htm)并看到了一些关于维护连接池的好建议,但没有确定峰值负载。
对此的任何帮助都将非常感激。
答案 0 :(得分:0)
始终建议确定您的峰值负载并相应地设置值。
我之前也遇到过这样的情况。 Dint找到一个合适的方法来为setMaxTotal()获得一个好的值。
但这对我来说很有用
如果您的应用程序在linux上运行,则可以执行lsof -p <process id>
。
这将为您提供应用程序的所有打开连接。 并且您可以在高负载期间grep您的目标服务器名称。
lsof -p <process id>|grep <target server>
这将显示应用程序中与目标服务器的所有连接。
如果httpclient不能满足重负载,那么将该值保持在100以下总是好的。 池最多只能容纳100个对象。