この問題は断続的であり、30 秒ごとに実行され、次のネットワーク通信を実行するプロセスで数時間ごとに発生します。
- リッスンしているリモート マシン上にサーバーがあります
- クライアントはこのマシンに接続し、サーバーに再度接続するように指示します
- サーバーはソケットを閉じ、クライアントに再接続します
- クライアント側でソケットが閉じられると、クライアントはすぐに同じポートでリッスンを開始します
クライアントが同じポートでリッスンを開始しようとすると、JVM_Bind エラーがクライアントで発生しますが、元のソケットが閉じられた後にのみ開始しようとします。ソケットを閉じてから新しいソケットを開くまでに 100 ミリ秒のわずかな遅延を追加すると、JVM_Bind エラーが回避されます。
このシナリオをデバッグするには、どのツールを使用できますか? 連続 netstat を実行しても、ポートに干渉するものは何も表示されませんでした。
同じポートでリッスンする新しいソケットを開始するのは一種の悪い考えですが、なぜこのエラーが断続的に発生するのでしょうか?
編集:いくつかの追加情報。サーバーは、サーバー上の一時ポートからクライアントに接続します。クライアントの古いソケットはすぐに CLOSED になり、再度開くことができるはずです。考えられる原因は、OS、JVM、またはハードウェアで何かが起こっているのではないでしょうか?