Apache ActiveMQ Artemis замедление - PullRequest
       18

Apache ActiveMQ Artemis замедление

0 голосов
/ 22 февраля 2019

Время от времени под большой нагрузкой мы можем наблюдать замедление при отправке сообщений JMS.Иногда отправка простого сообщения может занять до 30 секунд.Первое, что мы заметили, это огромный размер файлов журнала 9,5 ГБ.Почему файлов так много и есть ли параметры, которые влияют на количество файлов.Согласно документам:

Apache ActiveMQ Artemis имеет сложный алгоритм сбора мусора файлов, который может определить, нужен ли конкретный файл журнала больше - т.е. все ли его данные были удалены в тех же или других файлах.Если это так, файл можно восстановить и использовать повторно

Но мы видим много файлов в папке журналов.Может ли это повлиять на производительность отправки сообщений?

ОБНОВЛЕНИЕ

Мы используем встроенный JMS-сервер версии 2.3.0.Вот некоторые из установленных нами конфигов:

config.setPersistenceEnabled(true);
config.getAcceptorConfigurations().add(new TransportConfiguration(InVMAcceptorFactory.class.getName()));
config.getConnectorConfigurations().put("connector", new TransportConfiguration(InVMConnectorFactory.class.getName()));
AddressSettings addressSettings = new AddressSettings();
    addressSettings.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE);
    addressSettings.setMaxSizeBytes(30 * 1024 * 1024L);
    addressSettings.setPageSizeBytes(10 * 1024 * 1024L);
    addressSettings.setPageCacheMaxSize(20);
    config.getAddressesSettings().put("jms.queue.*", addressSettings);
    config.setJournalBufferSize_AIO(819200);
    config.setJournalBufferSize_NIO(819200);

1 Ответ

0 голосов
/ 25 февраля 2019

Первое, что приходит на ум, это то, что, поскольку journal-pool-files по умолчанию равно -1 и journal-file-size по умолчанию 10485760 байт (то есть 10 МБ), брокеру приходится создавать и инициализировать файлы 10 МБ во время выполнения по мере накопления сообщений,и как только эти файлы будут созданы, журнал не будет сокращен до меньшего набора файлов по мере использования сообщений.Создание и инициализация файлов - это дорогостоящая операция, поэтому вы должны настроить журнал так, чтобы у вас было достаточно файлов, предварительно созданных для работы с ожидаемым объемом сообщения.См. документацию Apache Artemis в журнале для получения более подробной информации.

...