ActiveMQ Artemis相对于“Classic”的性能降低

3
我正在进行ActiveMQ "Classic" 5.15.4到ActiveMQ Artemis 2.17.0的迁移,并观察到性能下降。我在主题上使用1个生产者和不同数量的消费者进行测试。我测量创建消息和消费者接收消息之间的时间。
测试是在3个节点的集群上进行的,所有节点都相互连接。每个代理都嵌入在JBoss中。我使用了3个节点的集群,因为这是我们当前的生产设置。我正在挑战此设置,因为我们有很少的消费者和生产者(每次少于50个),并且我们正在使用消息分组,但我需要在仅具有2个处于活动/备用模式的节点的设置上进行POC。
生产者始终针对同一节点,消费者随机连接到另外2个节点。

results

我们可以看到,在所有情况下,Artemis 比 ActiveMQ Classic 稍微慢一些。我想知道这是否是预期的结果。

ActiveMQ Classic 5.15.4 和 ActiveMQ Artemis 2.17.0。 - Nicolas Verducou
2个回答

0

一般来说,由于它们之间的显著架构差异,ActiveMQ Artemis比ActiveMQ“Classic”快得多。简而言之,ActiveMQ Artemis被设计为完全非阻塞,并且在规模方面表现非常出色,相比之下,ActiveMQ“Classic”则不然。

然而,在这种情况下,您并没有在大规模测试代理。您正在测试一个生产者和“不同数量”的消费者。这绝对不是需要三个代理集群的生产用例。单个代理在适度甚至最小的硬件上几乎肯定足够。

即使将客户端数量推到约50个,我仍然认为一个活动节点就足够了。如果使用消息分组,则绝对要使用一个活动节点。有关集群消息分组的重要详细信息,请参见文档

同样需要记住的是,在比较每个经纪人的配置时,必须确保“苹果与苹果”之间进行比较。这并不一定是微不足道的,尤其是当涉及到集群时。由于您没有分享您的经纪人配置,因此我无法评论它们是否在功能上等效或者至少尽可能接近功能等效。有许多不同的特定于配置的原因,解释了为什么一个经纪人在某些用例中表现更好。

在过去的几年中,SoftwareMill已经对流行的消息代理进行了持久性、复制队列用例的基准测试。上次测试ActiveMQ“Classic”和Artemis是在2017年。这里是结果。从那时起,SoftwareMill不再测试ActiveMQ“Classic”。


好的,谢谢你的回答。我使用了一个由3个节点组成的集群,因为这是我们当前的生产设置。我正在挑战这个设置,因为我们只有少量的消费者和生产者(每次少于50个),而且我们正在使用消息分组,但我需要在仅有2个节点处进行主/备模式的POC测试。我会查看你提供的链接。谢谢。 - Nicolas Verducou
我更新了我的答案以回应你的评论。我也将这些细节添加到原始问题中,因为它们很重要。希望有所帮助! - Justin Bertram

0

性能测试非常复杂,如果您无法控制环境的所有方面(网络数据包调整、操作系统调整等),那么很难确定一个消息传递产品是否比另一个更出色。

此外,回应@Justin Bertram的评论,为了使两个产品具有类似的消息流特性,需要对两个产品、消息流模式和客户端应用程序编码都有专业知识。

最后,当涉及到分布式系统和产品时,通常会在达到产品极限之前就达到环境极限,例如磁盘性能、网络性能或应用程序延迟经常限制性能结果。尤其是对于80%的企业工作负载而言,它们并不处于大规模状态。

最佳建议-了解您预期的消息流模式和消息大小。对该场景进行性能测试,直到您知道何时需要扩展。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接