我们的 Java 应用程序由客户端和服务器组成。在我们的生产环境中,建立连接需要很长时间(约 40 秒)。
我们使用 tcpdump 捕获了网络流量,在建立连接时可以看到以下数据包:
start client > server SYN
2 milliseconds later server < client SYN,ACK
38 *seconds* later client > server ACK
在我们的其他环境中,所有三个数据包几乎都是瞬时发生的。
任何人都可以建议可能导致 38 秒延迟的原因,或建议诊断它的步骤吗?请注意,因为这是一个生产环境,所以我们很难更改诊断代码。
以下是有关我们环境的一些详细信息:
- 客户端使用来自Apache Mina 1.0.1的 SocketConnector ,它在内部使用 java.nio.channel.SocketChannel.connect(..)。
- 客户端在 IBM WebSphere 7.0.0.17 中运行
- Java 版本 = 1.6.0,Java 编译器 = j9jit24,Java VM 名称 = IBM J9 VM
- 操作系统是 AIX,版本 6.1