4

我正在使用 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 服务器。

4

1 回答 1

2

我在这里使用windows也有同样的问题。就我而言,HttpClient 引入了大约 1 秒的延迟,但只是在第一次尝试执行帖子时(我按顺序做了几个)。我尝试了一种解决方法,即创建一个“假”帖子到本地主机并执行它(除了 IOException)。通过这样做,我调用真实服务时的延迟从大约 1 秒减少到大约 100 毫秒。我还不能改进更多。

于 2011-05-06T01:27:22.103 回答