我们正在努力提高Java代理应用程序的平均延迟时间。
Java应用程序从客户端接收消息并将其代理到必要的服务器。
协议是二进制的,异步的。
拓扑结构是:
Client (1) - Java proxy (2) - Server (3)呼叫流是
(1)-(2)-(3)-(2)-(1)对于Java代理而言,所需的是2 ms的单向跳平均延迟开销。
我们已经注意到,如果我们增加客户端的数量,延迟开销就会线性地减少。
比方说,
1 client -> Java proxy latency overhead = 6 ms.
2 clients -> Java proxy latency overhead = 3 ms.
4 clients -> Java proxy latency overhead = 1.5 ms.另一方面,即使在一个客户端,我们也必须遵守延迟要求。
如果我们用Erlang实现替换代理的Java实现,我们观察到的行为也是一样的。
我们能为低级别的OS调优做些什么吗?
Java主机是2个Nehalem X5550 2.67GHz,总共16个hw线程;版本5.6
发布于 2011-10-03 08:39:56
在执行测试之前,我将确保JVM已经热身,并设置为实时优先级。您应该能够在网络延迟之外实现0.1ms以下的延迟。
发布于 2012-09-27 19:18:02
您的Java代理是否在等待服务器响应时阻塞?这就解释了你所看到的时间。
https://serverfault.com/questions/317898
复制相似问题