Немного предыстории сценария.
У меня есть распределенное приложение, работающее на 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" в таймере. Поискав в Интернете, я нашел мало информации о значении этого значения.
Итак, вопрос в том,
что означает значение таймера «probe» и может ли это отражать какую-то проблему при чтении из сокета или записи в него?