在建立之前,评估/诊断时间连接在SYN_RECV中

时间:2011-10-05 01:02:31

标签: tcp

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

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

人们有什么建议来调查阻碍连接快速建立的瓶颈在哪里?

P.S。后续问题:有没有人知道在首次“点击”服务器后建立连接的时间是什么样的统计数据?

更新万一其他人遇到这个:最后,我写了一个小的Java程序从/ proc / net / tcp中获取数据并进行分析,看来这种情况发生在一个小的连接的比例(尽管这仍然意味着在任何时候都可以在这种状态下有多个连接,因为它们可以保持这种状态持续数秒)并且看起来像这些连接的本地问题。超过90%的连接仍然在< 500毫秒和81%的< 200毫秒。因此,如果其他人得到这个,就不一定需要立即恐慌。

1 个答案:

答案 0 :(得分:2)

尝试捕获数据包跟踪并查看是否正在重新传输SYN ACK(以及re-tx的数量)。这可能表示路由问题(SYN通过路径A进入,SYN-ACK通过路径B进入,但是已经断开)。

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