アクティブなソケットがあるという問題があります。アクティブなソケットに巨大なソケット番号
ActiveMQドキュメントによれば、非アクティブなためソケットは閉じられます。しかし、私のアプリケーションでは、いつかの後に、私は巨大なソケット接続があるため、非アクティブです。ここに私の設定です:
クライアント構成がsoTimeoutの30代を持っている、のConnectionTimeout 10S
Broker構成は、私は以下の例外を持っています、ログファイルに30代
としてmaxInactivityDurationを持っているが、なぜソケットがactivemqのドキュメントに従って閉じられていないのか理解できません。
は[WARN] [20/11月/ 17 23:58:06.473] [運輸] - へのトランスポート接続 :TCP://10.227.129.219:34896失敗しました: org.apache.activemq.transport。 InactivityIOException: TCP:://10.227.129.219:34896
のActive MQの資料が記載されてhere
使い方番目のチャンネルは、あまりにも(> 30000)長いため 非アクティブ(作られた無接続の試み)なかったですデフォルト値。データが書き込まれていないか、30秒間 接続から読み取られている場合、中InactivityMonitorキックは。 InactivityMonitorは、私が使用していますInactivityIOExceptionをスローし、あなたの情報については、接続
に関連した トランスポートをシャットダウンしますactivemq 5.13.3。以下はnetstat
コマンドのスナップショットです。
netstat -an | grep 9999
tcp 0 0 X.X.X.X:9999 Y.Y.Y.Y:38200 ESTABLISHED
tcp 0 0 X.X.X.X:9999 Y.Y.Y.Y:44582 ESTABLISHED
tcp 0 0 X.X.X.X:9999 Y.Y.Y.Y:41278 ESTABLISHED
... (few hundreds in total)
非アクティブの意味がわかりません。アプリケーションが応答していないか(ソケットが良好でアプリケーションがフリーズしているが、アプリケーションがタイムアウトしているなど)または、ネットワークの問題のようなもので、TCP接続自体が壊れていますか?したがって、ネットワークを節約したい場合は、送信されたアプリケーションデータがなくてもtcp keep aliveを使用してソケットを閉じることができます。 –
"デフォルト値を使用すると、30秒間データが書き込まれたり読み取られなかったりすると、InactivityMonitorが起動します。InactivityMonitorはInactivityIOExceptionをスローし、接続に関連するトランスポートをシャットダウンします。" – Apolozeus
このコメントは、あなたは答えを見つける –