Java(Netty)应用程序达到11k req / second高原

时间:2018-06-04 18:11:36

标签: java linux performance netty

我有过去3天的指标截图。一夜之间,当流量低于11k req / sec时,服务器工作正常,响应时间约为0-1ms。当流量超过11k req / sec时,http响应时间加速到~700ms,tcp listen溢出尖峰,haproxy会话尖峰,前端会话达到haproxy配置限制或30k。我可以通过更改配置来提高30k的限制,但这不会改善响应延迟或流量吞吐量,因此我将其保留在30k。 JVM内存使用率远低于容量。 CPU使用率达到43%左右。那是在12核服务器上。我认为这不是CPU限制?

UPDATE :添加了没有空闲时间的新CPU图表(这令人困惑)。添加了具有发送接收字节/秒的新网络图。

haproxy backend sessions haproxy measured response times haproxy current session counts. tcp listen overflows jvm memory usage cpu usage (revised with no idle) network bytes/sec

此外,内部延迟测量(由我的代码库中的计时器测量)显示响应始终以<1ms处理,即使在更高的流量下也是如此。该图稍微有点混乱,但基本上有单独的响应图<= 1秒,<= 0.75秒,......,<= 0.005秒,<= 0.001秒,并且它们都是相同的,因为响应通过应用程序代码中的计时器测量的全部<= 0.001秒。

Internal Latency Metrics

在撰写本文时,使用当前版本的Netty,使用Java编写服务器应用程序4.1.25。 haproxy 1.6.x在应用程序前运行,用于指标和其他方式进行简单代理。服务器正在运行带有最新补丁的Ubuntu 16.04.x.我之前在Ubuntu repos中使用过OpenJDK 8,但现在运行的是OpenJDK 10.0.1的下载版本。两个OpenJDK之间没有明显的区别。

我能做些什么让这台服务器处理更大量的流量?是否有我可以捕获的其他指标或我可以检查的设置有助于解决问题?

0 个答案:

没有答案