シナリオの背景を少し説明します。RH6.5
で実行されている分散アプリケーションがあり、JMS (OpenMQ 4.5.2) を使用してホスト間でメッセージを送信しています。1
つのホスト (ホスト A) は、ルーターやスイッチなどのネットワーク要素から情報を受信し、その情報を別のホスト (ホスト B) に中継して処理します。JMS はホスト B で実行されています。JMS
を流れるこれらのメッセージは、平均して 1 秒あたり約 100 件ですが、数百件のメッセージが急増しても問題ありません。
時々、メッセージ フローが停止し、ホスト A が同様の速度でネットワークからデータを受信しているにもかかわらず、ホスト B に何も届かないことがあります。このような状況が発生すると、ホスト B の JMS プロセスが CPU をすべて占有します。
netstat -o を使用すると、ホスト B 側の JMS ソケットの Recv-Q が非常に高いことにも気付きました。
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」にも気付きました。Web で検索しても、この値の意味に関する情報はほとんど見つかりませんでした。
そこで質問ですが、
「プローブ」のタイマー値はどういう意味ですか? また、これはソケットからの読み取りまたはソケットへの書き込みに関する何らかの問題を反映している可能性がありますか?