Потребление памяти ActiveMQ - PullRequest
       22

Потребление памяти ActiveMQ

0 голосов
/ 31 октября 2018

У меня есть несколько вопросов об использовании памяти ActiveMQ ... Сначала позвольте мне объяснить, что случилось.

У меня есть несколько очередей (10+), которые должны обрабатывать тысячи сообщений каждый день. Опция «Управление источником потока» включена для каждой очереди. Все мои сообщения * постоянные * сообщения.

Однажды в моей производственной среде мои потребители больше не потребляли сообщения, в то время как мои очереди получали больше сообщений от их производителей.

Я пытался перезапустить своих потребителей: безрезультатно. Перезапуск ActiveMQ : безрезультатно.

Я заметил, что значение «Используемый процент памяти» было больше 100 (что-то вроде 160). Затем я выделил больше памяти для моей виртуальной машины и моего брокера: это сработало, мои потребители снова стали потреблять.

У меня следующие вопросы:

1 / Что я понял, так это то, что память, используемая ActiveMQ , связана с количеством сообщений, которые хранятся в памяти до отправки потребителям. Это правильно ? Если нет, как это удалось?

2 / Например, если у меня установлен размер предварительной выборки 100 на стороне потребителя, так что самое большее 100 сообщений будет в памяти на стороне очереди? Если нет, то как это удалось?

3 / Как я могу достичь "Используемый процент памяти: 160"? Документация, которую я прочитал это мне не очень помогло ... И, похоже, оно не связано с памятью Java Heap (когда я смотрю это с помощью Jconsole, когда JHM уменьшается, использование процента памяти не помогает). Это потому, что, например, если у меня есть 10 очередей, каждая очередь требует 160 МБ в память при этом у моей JVM всего 1ГБ

4 / Если я установлю атрибут «memoryLimit» в элементе policyEntry для очередь, я думаю, очередь не будет использовать больше, чем объем памяти, которую я установили. Что делать, если в очередь приходит сообщение больше, чем memoryLimit?

...