【发布时间】:2021-04-10 05:45:00
【问题描述】:
在遇到global-max-size 之后,我们在 ActiveMQ Artemis 中看到分页。当分页开始生产者的写入速度从 1000 范围下降到 50 左右。然后我们启动消费者快速清空队列(这是我们的测试设置)。然而,直到队列完全为空,生产者的性能保持在 50 左右。这非常关键,因为如果在生产中发生这种情况,我们将永远无法恢复原始性能,直到我们停止生产者并让消费者清空整个队列。为什么会有这种行为?队列消耗了一半(或者可能是 75%)后,broker 是不是又回到了它的性能?
当我想到队列时,分页在队列满时开始。因此,为了摆脱分页,我需要使用最后使用的分页消息,因为它是一个队列(FIFO)。我认为这就是这里发生的事情。代理离开分页模式后,性能恢复到原来的水平。
【问题讨论】:
-
你曾经离开分页模式吗?如果是这样,那之后性能会提高吗?只要您在分页,性能就会下降。消费者必须消耗足够的能量才能离开分页模式,以便有机会提高性能。
-
是的,我离开了分页模式。在经纪人离开分页模式后,性能恢复到原来的水平。但问题是只有在我消费完所有消息后才会发生这种情况。我有生产者,生产者的速率为 50 msg/s,消费者为此测试做了 20,000 批。即使队列中剩下的消息很少,它也会降低分页模式的性能。如果我停止生产者并让消费者清空 q,那么当生产者重新启动时,它会提供良好的性能。
标签: activemq-artemis