Обнаружение управления потоком ActiveMQ - PullRequest
1 голос
/ 20 сентября 2011

У меня есть производственная система, которая использует ActiveMQ (5.3.2) для отправки сообщений с сервера A на сервер B. Несколько недель назад система по необъяснимым причинам начала тратить 10+ секунд на отправку сообщения.После перезагрузки производителя система работала нормально.

После расследования я почти уверен, что это связано с управлением потоком данных производителя.(У меня довольно стандартная настройка activemq).За день до этого (по другим причинам) мое потребительское программное обеспечение работало беспорядочно и на некоторое время даже прекратило принимать подключения.Я предполагаю, что это вызвало это.(Меня озадачивает, что запросы все еще блокировались днем ​​позже.)

Вопрос - как я могу подтвердить, что запросы были ограничены.Я сделал дамп кучи сервера - есть ли в памяти данные, которые я могу найти?

Редактировать: Я нашел следующее: WireFormatNegotiator.tcpNoDelayEnabled = false для одного из трех экземпляров WireFormatNegotiator в памяти.Я пытаюсь выяснить, что это устанавливает.

И, во-вторых (и это более важно), есть ли способ, с помощью которого я могу использовать JMX, чтобы определить, подавляются ли сообщения?Я хотел бы настроить оповещение Nagios, чтобы сообщить мне, если это произойдет в будущем.Какое свойство я должен проверить с JMX?

1 Ответ

0 голосов
/ 21 сентября 2011

вы можете настроить ваш клиент-производитель для выдачи исключений javax.jms.ResourceAllocationException, которые затем могут быть обнаружены / зарегистрированы и т. Д., Просто установите одно из следующих ...

<systemUsage>
   <systemUsage sendFailIfNoSpaceAfterTimeout="3000">
   ...OR...   
   <systemUsage sendFailIfNoSpace="true">
...