Немного предыстории по сценарию.
У меня есть распределенное приложение, работающее на RH6.5, которое использует JMS (OpenMQ 4.5.2) для отправки сообщений между хостами.
Один хост (хост A) получает информацию от сетевых элементов, таких как маршрутизаторы и коммутаторы, и передает эту информацию другому хосту (хост B) для обработки. JMS работает на хосте B.
Эти сообщения, проходящие через JMS, в среднем составляют около 100 сообщений в секунду и могут иметь пики в несколько сотен сообщений без каких-либо проблем.
Иногда я наблюдаю, что поток сообщений останавливается, ничто не достигает Узла B, несмотря на то, что Узел A все еще получает данные из сети с подобными скоростями. Когда это происходит, процесс JMS на хосте B занимает весь процессор.
Используя netstat -o, я также заметил, что Recv-Q сокета JMS на стороне хоста B очень высок:
Proto Recv-Q Send-Q Local Address Foreign Address State Timer
tcp 268439 0 HostB:9030 HostA:53712 ESTABLISHED off (0.00/0/0)
На стороне узла A уровень Send-Q также высок:
Proto Recv-Q Send-Q Local Address Foreign Address State Timer
tcp 0 68736 HostA:53712 HostB:9030 ESTABLISHED probe (17.25/0/0)
Я также заметил значение "зонд" в таймере. При поиске в Интернете я обнаружил мало информации о значении этого значения.
Итак, вопрос в том,
Что означает значение таймера "probe" и может ли это отражать некоторые проблемы чтения или записи в сокет?