我有一个基于生产者消费者的应用程序基于Netty。基本要求是构建面向消息的中间件(MOM)
因此,MOM基于排队的概念(排队使系统松散耦合,这是应用程序的基本要求)。 经纪人了解MQTT协议。我们在本地机器上对应用程序进行了压力测试。这些是本地机器的规格。
我们取得了很好的成绩。但是,我们的生产服务器是基于AWS Ubuntu的。因此,我们在AWS Ubuntu服务器上测试了相同的应用程序。性能比本地系统低10倍<差> 。这是AWS服务器的配置。
我们尝试了以下选项来确定问题所在。
现在我们已经完全没有选择了。两个机器上的java版本是相同的。
因此,我们的最后一招是使用NodeJS构建整个应用程序,但这需要付出很多努力,而不是在Netty本身中调整一些东西。我们并不是在寻找基于Java的Netty替代品,因为我们认为这可能是JVM NIO在Mac和Ubuntu上的本机实现中的一个错误。
我们可以尝试哪些可能的选项来解决此错误。这是Netty固有的问题。或者这与Mac和Ubuntu上的一些内部实现有什么关系,这些实现是不同的,并且正如我们所看到的那样导致性能差异?
修改
压力测试参数如下。
修改2
这些是jvmtop为一个负载测试阶段提供的分析器结果。