ActiveMQ Artemis 分页行为解释
ActiveMQ Artemis paging behavior explanation
满足 global-max-size
后,我们在 ActiveMQ Artemis 中看到分页。当分页开始时,生产者的写入速度从 1000 范围下降到 50 左右。然后我们启动消费者快速清空队列(这是我们的测试设置)。然而,直到队列完全空生产者的性能保持在50左右。这是非常关键的,因为如果在生产中发生这种情况,我们将永远无法恢复原始性能,直到我们停止生产者并让消费者清空队列。为什么会有这种行为? broker 不会在队列消耗一半(或者可能是 75%)后恢复性能吗?
当我想到队列时,当队列满时就开始分页。因此,为了摆脱分页,我需要使用分页消息,因为它是一个队列 (FIFO),所以我将最后使用它。我认为这就是这里发生的事情。在 broker 离开分页模式后,性能恢复到原来的状态。
只要你在分页,性能就会下降。消费者必须消耗足够多的数据才能让您离开分页模式,以便有机会提高性能。
如果您不想进入分页模式,您有两个选择:
- 给经纪人更多的内存。
- 使用不同的
<address-full-policy>
(例如 BLOCK
或 FAIL
)。
满足 global-max-size
后,我们在 ActiveMQ Artemis 中看到分页。当分页开始时,生产者的写入速度从 1000 范围下降到 50 左右。然后我们启动消费者快速清空队列(这是我们的测试设置)。然而,直到队列完全空生产者的性能保持在50左右。这是非常关键的,因为如果在生产中发生这种情况,我们将永远无法恢复原始性能,直到我们停止生产者并让消费者清空队列。为什么会有这种行为? broker 不会在队列消耗一半(或者可能是 75%)后恢复性能吗?
当我想到队列时,当队列满时就开始分页。因此,为了摆脱分页,我需要使用分页消息,因为它是一个队列 (FIFO),所以我将最后使用它。我认为这就是这里发生的事情。在 broker 离开分页模式后,性能恢复到原来的状态。
只要你在分页,性能就会下降。消费者必须消耗足够多的数据才能让您离开分页模式,以便有机会提高性能。
如果您不想进入分页模式,您有两个选择:
- 给经纪人更多的内存。
- 使用不同的
<address-full-policy>
(例如BLOCK
或FAIL
)。