PoolingClientConnectionManager setMaxTotal:使用什么是好的默认值?

时间:2013-08-13 19:55:59

标签: apache-httpclient-4.x

使用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)并看到了一些关于维护连接池的好建议,但没有确定峰值负载。

对此的任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

始终建议确定您的峰值负载并相应地设置值

我之前也遇到过这样的情况。 Dint找到一个合适的方法来为setMaxTotal()获得一个好的值。

但这对我来说很有用

如果您的应用程序在linux上运行,则可以执行lsof -p <process id>

这将为您提供应用程序的所有打开连接。 并且您可以在高负载期间grep您的目标服务器名称。

lsof -p <process id>|grep <target server>

这将显示应用程序中与目标服务器的所有连接。

如果httpclient不能满足重负载,那么将该值保持在100以下总是好的。 池最多只能容纳100个对象。