操作系统参数调整延迟改善

我们正在尝试改进Java代理应用程序的平均延迟
Java应用程序从客户端接收消息并将其代理到必要的服务器。
该协议是二进制的,asynchronous的。

该拓扑结构是:

Client (1) - Java proxy (2) - Server (3) 

呼叫stream程是

 (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代理实现。

我们可以为低级操作系统调优做些什么吗?
Java代理主机是2个Nehalem CPU X5550 2.67GHz,总共16个线程; 红帽企业Linux服务器版本5.6

在执行testing之前,我会确保JVM预热并设置为实时优先级。 您应该能够实现低于0.1毫秒的延迟,超过networking延迟。

您的Java代理在等待服务器响应时被阻塞? 这将解释你所看到的时代。