我正在使用 Apache HttpClient 以大约 20 个 POST 请求/秒来查询本地主机上的 HTTP/1.0(不保持活动状态)服务器。我像这样启用了 TCP_NODELAY:
val httpParams = new BasicHttpParams()
HttpConnectionParams.setTcpNoDelay(httpParams, true)
val client = new DefaultHttpClient(connectionManager, httpParams)
尽管如此,每分钟有几次我看到发送此类请求的随机延迟为 10-200 毫秒(在服务器上测量显示,延迟在发送中)。我检查了一下,这不是垃圾收集器暂停。可能是什么问题?
我尝试用 C++ 客户端以相同的速率查询服务器,它没有这样的随机延迟,所以我认为这是 HttpClient 的问题。
更新:我检查了码头 HttpClient 的实现,它也有同样的问题。这可能是 FreeBSD 上 JVM 的一些问题吗?我应该在 linux 上测试这个,但我手头没有 linux 服务器。