2

我们的 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
4

1 回答 1

1

你是不是用完了描述符和/或你的 TCP 接受队列已满?

于 2012-07-11T14:52:02.093 回答