基于Netty的应用程序性能问题
我有一个基于Netty的生产者基于消费者的应用程序。 基本要求是构建一个面向消息的中间件(MOM)
妈妈
所以MOM基于排队的概念(排队使系统松散耦合,这是应用程序的基本要求)。 代理了解MQTT协议。 我们在本地机器上执行应用程序的压力测试。 这些是本地机器的规格。
我们获得了很好的结果。 但是,我们的生产服务器是基于AWS Ubuntu的。 所以我们强调在AWS Ubuntu服务器上测试相同的应用程序。 性能比当地系统差 10倍。 这是AWS服务器的配置。
我们尝试了以下方法来找出问题所在。
现在我们已经完全没有选择。 两个机器上的java版本是相同的。
所以对我们来说最后的办法是使用NodeJS来构建整个应用程序,但这需要很多努力,而不是在Netty本身中调整某些东西。 我们不是在寻找基于Java的Netty替代品,因为我们认为这可能是JVM NIO在Mac和Ubuntu上本地实施的一个缺陷。
我们可以尝试进一步解决这个错误。 这是一个Netty固有的问题。 或者,这是否与Mac和Ubuntu上的一些内部实现有关,这些实现与我们看到的不同并导致性能差异?
编辑
压力测试参数如下。
编辑2
这些是jvmtop针对负载测试的一个阶段提供的分析器结果。