【问题标题】:Assessing/diagnosing time connections are in SYN_RECV before being established评估/诊断时间连接在建立之前处于 SYN_RECV 中
【发布时间】:2011-10-06 10:34:50
【问题描述】:

我正在尝试使用相当标准的 CentOS/Apache 设置来提高(虚拟)Web 服务器的性能,我注意到的一件事是新连接似乎“粘”在 SYN_RECV 状态,有时会持续几秒钟,在最终被 Apache 建立和处理之前。

我的第一个猜测是 Apache 可能会达到它准备同时处理的连接数的限制,但是例如关闭 keep-alive netstat 报告了一些已建立的连接(只是那些不涉及 localhost 的连接,因此丢弃了“家务”连接,例如 Apache 和 Tomcat 之间的连接),而启用 keep-alive 时,它​​会很高兴地获得多达 100 多个已建立的连接(但是无论哪种方式,SYN_RECV 行为都没有明显区别——通常在任何时候都有 10-20 个连接位于 SYN_RECV 中)。

人们对于调查阻碍快速建立连接的瓶颈有哪些建议?

附:后续问题:有人知道第一次“命中”服务器后建立连接的时间的典型统计数据是什么吗?

更新以防其他人遇到这种情况: 最后,我编写了一个小型 Java 程序来从 /proc/net/tcp 获取数据并进行分析,看来这发生在一个小程序中连接的比例(尽管这仍然意味着在任何时候都可能有许多连接处于这种状态,因为它们可以保持这种状态数秒)并且看起来像是这些连接的本地问题。超过 90% 的连接仍然在

【问题讨论】:

    标签: tcp


    【解决方案1】:

    尝试捕获数据包跟踪并查看是否正在重新传输 SYN ACK(以及重新发送的次数)。这可能表明存在路由问题(SYN 通过路径 A 进入,而 SYN-ACK 通过路径 B 进入,但路径 B 已损坏)。

    还要查看这些连接是否具有特定模式(例如来自同一网络)。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多