我使用Apache HttpClient以大约20个POST请求/秒的速度在本地主机上查询HTTP/1.0(不保持活动状态)服务器。我有这样启用TCP_NODELAY:Apache HttpClient在高请求/秒下的随机延迟
val httpParams = new BasicHttpParams()
HttpConnectionParams.setTcpNoDelay(httpParams, true)
val client = new DefaultHttpClient(connectionManager, httpParams)
尽管如此,每分钟几次我看到的10-200毫秒发送这样的请求随机延迟(在服务器上显示测量,即延迟在发送)。我检查了一下,这不是垃圾收集器暂停。可能是什么问题?
我试图用C++客户端以相同的速率查询服务器,并没有这种随机延迟,所以我认为这是HttpClient问题。
更新: 我检查了jetty HttpClient实现,它有同样的问题。这可能是FreeBSD上的JVM的一些问题吗?我应该在linux上测试这个,但我手边没有linux服务器。
允许连接到目标主机的连接数量?你调整了这个参数吗? – MJB 2011-04-24 23:36:42
它总是一个连接(由互斥体控制)。 – Michael 2011-04-27 23:32:52
你尝试禁用'http.connection.stalecheck'吗?它只应该是10-30毫秒的延迟,但可能更多是由于DNS到期或其他一些复杂因素。 – Barett 2017-02-02 20:36:01