java - TCP 连接比 ping 花费 X100 更长的时间

标签 java networking tomcat tcp

我在机器 A 上有一个 java 进程通过 TCP 与机器 B 上的 Tomcat 通信。 TCP 连接(只是 syn-syn/ack 交换)始终需要 100 毫秒的数量级,而 ping 请求需要 1 毫秒(服务位于同一个 LAN 上)。

  1. 什么会导致建立 TCP 连接的延迟增加?
  2. 如何优化它?

注意:

  • 这还不是 3 次握手,我只测量 syn/syn-ack 交换。
  • 服务器是一台非常强大的机器,完全没有负载。
  • 连接请求是针对 IP 而不是主机名,因此不涉及 DNS 查找。事实上,这无关紧要,因为我正在测量 SYN 离开机器 A 的时间。

最佳答案

看来问题不在客户端或服务器本身。我在客户端和服务器上进行了两次数据包转储:

  1. 客户端看到 SYN 和收到 SYN/ACK 之间有 100-150 毫秒的时间差。
  2. 服务器看到接收 SYN 和发送 SYN/ACK 之间只有 20 毫秒的时间差。

因此,问题一定出在某个中间层(路由器/防火墙/诸如此类)。

关于java - TCP 连接比 ping 花费 X100 更长的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1858519/

相关文章:

java - 无法加载类 org.slf4j.impl.StaticLoggerBinder 和无法加载 native hadoop 库

java - 使用 OpenId 进行 Alfresco 身份验证

java - Java UDP中如何获取实际数据包大小 `byte[]`数组

tomcat - 当 Jenkins 通过 Tomcat 运行时如何设置 JENKINS_HOME 变量

java - 从 JOptionPane 下拉列表框中选择后无法刷新 jtextarea

java - 如何使用翻新和MVVM使用用户输入查询API?

c++ - 可以在数据报套接字中用于发送和接收吗?

ios - 如何获取 iOS 设备的主机名

java - Spring Boot 应用程序开始使用所有 CPU

apache - FAIL - 上下文路径/dms 中的应用程序无法启动