最近,我们发现TCP连接问题主要限于浏览我们网站的mac和Linux用户。
从用户的角度来看,它表示与我们的网站的连接时间非常长(> 11秒)。
我们已经设法跟踪了该问题的技术特征,但无法弄清为什么会发生或如何解决。
基本上,正在发生的事情是客户端的计算机正在发送SYN数据包以建立TCP连接,而Web服务器接收到它,但是没有以SYN / ACK数据包响应。客户端发送了许多SYN数据包后,服务器最终以SYN / ACK数据包进行响应,其余连接一切正常。
而且,当然,这是解决问题的方法:它是间歇性的,不会一直发生(尽管确实会在10%到30%的时间之间发生)
我们使用Fedora 12 Linux作为操作系统,使用Nginx作为Web服务器。
Wireshark分析的屏幕截图
更新:
在客户端上关闭窗口缩放可阻止该问题的发生。现在我只需要一个服务器端解析(我们不能让所有的客户端都这样做):)
最终更新:
解决方案是关闭我们公众可以访问的服务器上的TCP窗口缩放 和 TCP时间戳。