Ошибка применения параметров при использовании tag xml_change |
Параметр не применился, в логе брокера присутствуют записи вида: ERROR org.apache.activemq.artemis.core.server - cvc-complex-type.2.4.a: Invalid content was found starting with element |
Ошибка происходит из-за ошибки в наименовании параметра, или пути до параметра. Необходимо в inventory в файле vars.yml проверить содержимое секции xml_change. Корректные пути и имена элементов можно посмотреть в xsd файле schema/artemis-configuration.xsd. |
Проблемы с редистрибуцией сообщений при отправке в ANYCAST очередь по FQQN. Например,сообщения при редистрибуции попадают в другую очередь в том же адресе, или редистрибуция не работает совсем. |
Значение параметра redistribute-to-target-anycast-fqqn либо не задано, либо задано по умолчанию (false) |
Добавить в конфигурционный файл брокера broker.xml настройку <redistribute-to-target-anycast-fqqn>true</redistribute-to-target-anycast-fqqn>. Если настройка отсутствует, используется значение по умолчанию false, которое приводит к ошибкам при редистрибуции сообщений в кластере. |
Повышенная утилизация памяти в персистентном режиме при использовании плагинов EncryptionMessagePlugin и/или MessagePlugin |
Не установлено ограничение -XX:MaxDirectMemorySize |
Подобрать индивидульно значения параметра JVM_ARGS в artemis.profile: -XX:MaxDirectMemorySize — отвечает за использование direct памяти. Рекомендуемое значение: 20% от xms |
Повышенная утилизация памяти в персистентном режиме при использовании плагинов EncryptionMessagePlugin и/или MessagePlugin |
Не установлена настройка -Dio.netty.MaxDirectMemory=0, netty использует свою дополнительную область памяти |
Данный параметр отвечает за ограничение памяти библиотеки Netty. Netty будет принудительно использовать лимит -XX:MaxDirectMemorySize, иначе может самостоятельно выделить себе вторую область памяти до XX:MaxDirectMemorySize (в таком случае используемая direct память будет в два раза больше чем XX:MaxDirectMemorySize). Параметр -Dio.netty.MaxDirectMemory устанавливается равным 0 при обновлении на релиз 2.2.1 и выше |
Повышенная утилизация памяти в персистентном режиме при использовании плагинов EncryptionMessagePlugin и/или MessagePlugin |
некорректная работа аллокатора glibc |
Установить параметр export MALLOC_ARENA_MAX=2 в artemis.profile |
Повышенная утилизация памяти в персистентном режиме при использовании плагинов EncryptionMessagePlugin и/или MessagePlugin |
Увеличенные настройки в broker.xml: journal-buffer-size и journal-max-io |
Убрать параметр journal-buffer-size из broker.xml, тогда будет использоваться значение по умолчанию 500Кб; параметр journal-max-ioустановится в значение 500 автоматически при обновлении на версию 2.2.1 |
При scaleDown на большом количестве сообщений (как минимум нескольких тысячах сообщений в одной очереди) и персистентном режиме работе брокера возможно появление в логах брокера при его остановке следующих сообщений: INFO org.apache.activemq.artemis.core.server - AMQ221078: Scaled down 4000 messages total. WARN org.apache.activemq.artemis.core.server - AMQ222153: Cannot locate record for message id = {id_value1} on Journal org.apache.activemq.artemis.api.core.ActiveMQShutdownException: Journal must be in state=LOADED, was [STOPPED] at org.apache.activemq.artemis.core.journal.impl.JournalImpl.checkJournalIsLoaded(JournalImpl.java:1311) at org.apache.activemq.artemis.core.journal.impl.JournalImpl.tryAppendDeleteRecord(JournalImpl.java:1176) … WARN org.apache.activemq.artemis.core.server - AMQ222153: Cannot locate record for message id = {id_value2} on Journal org.apache.activemq.artemis.api.core.ActiveMQShutdownException: Journal must be in state=LOADED, was [STOPPED] at org.apache.activemq.artemis.core.journal.impl.JournalImpl.checkJournalIsLoaded(JournalImpl.java:1311) at org.apache.activemq.artemis.core.journal.impl.JournalImpl.tryAppendDeleteRecord(JournalImpl.java:1176) … … |
Такое поведение брокера является ожидаемым, и это связано с тем, что добавление записи об удалении сообщения в журнал происходит без синхронизации с остальными потоками, в частности с потоком, в котором происходит остановка storageManager, который отвечает за работу с журналом сообщений. При следующем старте, брокер проведет проверку на наличие сообщений в журнале, которые должны быть удалены, и добавит запись об удалении таких сообщений в журнал. При этом в лог брокера будут выведены следующие сообщения: … INFO org.apache.activemq.artemis.core.server - AMQ221019: Deleting unreferenced message id={id_value1} from the journal INFO org.apache.activemq.artemis.core.server - AMQ221019: Deleting unreferenced message id={id_value2} from the journal … |
— |
При высоких нагрузках (больших размерах сообщений и высоких значениях tps) начинают нарастать значения метрик AddressSize и AddressMemoryUsage на межкластерных очередях |
Значение параметра producer-window-size задано по умолчанию (1Мб) |
В broker.xml установить параметру producer-window-size значение 10Мб, после чего перезапустить брокер, чтобы настройка применилась. |
При использовании мониторинга по Prometheus в логах могут быть получены предупреждения: WARN io.micrometer.core.instrument.internal.DefaultGauge - Failed to apply the value function for the gauge 'artemis.address.memory.usage.percentage'. Note that subsequent logs will be logged at debug level.\<br>java.lang.IllegalStateException: Broker is not started. It can not be managed yet |
Запрос метрик происходит во время старта или остановки брокера |
Необходимо выполнить старт брокера (мониторинг начнет работать после старта брокера) |
Не запускается редистрибуция из anycast очередей при старте брокера или при отключении консьюмеров от очередей |
Имя очереди не совпадает с именем адреса |
Сменить имя очереди/адреса |
Происходит накопление сообщений на бриджах, бриджи останавливаются и перестают работать |
Существенная нагрузка большими сообщениями, например 100tps для 400Кб сообщений |
Необходимо уменьшить поток больших сообщений (снизить tps) |