私たちの Java アプリケーションは、クライアントとサーバーで構成されています。私たちの実稼働環境では、接続の確立に長い時間がかかります (~40 秒)。
tcpdump を使用してネットワーク トラフィックをキャプチャしたところ、接続が確立されたときに次のパケットを確認できます。
start client > server SYN
2 milliseconds later server < client SYN,ACK
38 *seconds* later client > server ACK
他の環境では、3 つのパケットすべてがほぼ瞬時に発生します。
38 秒の遅延の原因、またはそれを診断するための手順を提案できる人はいますか? これは運用環境であるため、診断コードを変更することは難しいことに注意してください。
ここに私たちの環境に関するいくつかの詳細があります:
- クライアントは、内部で java.nio.channel.SocketChannel.connect(..) を使用するApache Mina 1.0.1 のSocketConnector を使用します。
- クライアントは IBM WebSphere 7.0.0.17 内で実行されています
- Java バージョン = 1.6.0、Java コンパイラ = j9jit24、Java VM 名 = IBM J9 VM
- OS は AIX、バージョン 6.1