1

我们是ActiveMQ具有所有默认设置的设置。它的经纪人网址就像failover:(tcp://host1,tcp://host2,tcp://host3)?randomize=false

我们有 2 个消息队列,生产者在其中发布持久消息。

消息通常具有稳定的流量,但当市场开放时,消息会持续近 2 个小时。此设置可以正常工作 2-3 天,然后消费者处理消息的速度变慢,我们看到队列增加。

消费者执行以下步骤:

  1. 转换消息。
  2. 处理它
  3. 添加到缓存和数据库。

Prefetch size是 1000。

以下是一些观察结果:

  1. 消费者处理似乎不是问题,否则它会一直放慢速度。
  2. 看起来 ActiveMQ 代理的处理速度变慢了,但我没有证据
  3. 我们观察到,在 3 台主机中,只有 1 台和 2 台主机处理大部分消息。

关于如何解释这种缓慢的任何想法?

编辑:

对此进一步分析,发现当消费者减速时, Kahadbstore [ Persistentmessage are stored in in broker] 达到 100% 存储。Kahadb我可以理解当存储达到 100% 时生产者会被阻止,但为什么消费者会放慢速度?是因为Kahadb在这段时间内可能会变慢并且提取相当于预取大小的消息需要更多时间吗?

4

0 回答 0