Потребитель ActiveMQ замедляется через несколько дней

Мы являемся ActiveMQ настройка со всеми настройками по умолчанию. URL брокера похож на 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 обрабатывают большинство сообщений.

Любые идеи о том, как объяснить эту медлительность?

РЕДАКТИРОВАТЬ:

Проанализировал это дальше и обнаружил, что Kahadb хранить [Persistent сообщения хранятся в Kahadb в брокере] достигает 100% памяти, когда потребитель замедляется. Я понимаю, что производитель блокируется, когда объем хранилища достигает 100%, но почему потребитель будет тормозить? Это потому что Kahadb может замедлиться в это время, а извлечение сообщений, эквивалентных размеру предварительной выборки, занимает больше времени?

0 ответов

Другие вопросы по тегам