我发现此问题试图对自定义的node.js Websocket服务器进行负载测试,其中某些套接字无法连接(它们达到了连接超时)。它似乎与当前负载无关,因为我也可以仅通过单个客户端线程测试就随机获得失败。
这似乎与node.js无关,因为我还可以重现在同一服务器上为静态页面提供服务的nginx负载测试的问题。总体故障率似乎在入站连接将失败的7-10%之间。
在本地客户端计算机或Internet连接上这似乎不是问题,因为我可以从其他位置的另一台计算机上重现该问题。
我已经检查了所有正常的可调参数(somaxconn,最大打开文件数等),据我所知,我远远没有达到任何极限。我没有在系统日志中看到与此问题相关的任何条目。我还尝试完全禁用iptables以防止出现任何防火墙问题。
该服务器是Ubuntu LTS 16.04(i7,32GB),是colo设施中的专用计算机。在与他们联系之前,我想看看是否可以找到有关O / S级别,机器级别或网络级别的问题的更多数据。
我能够捕获失败连接的tcpdump,但是我不确定如何处理它:
07:19:29.952730 IP localmachine.53949 > server.30312: Flags [S], seq 2408213894, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
07:19:29.952879 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0
07:19:30.951778 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0
07:19:32.949553 IP localmachine.53949 > server.30312: Flags [S], seq 2408213894, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
07:19:32.949650 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0
07:19:34.947783 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0
07:19:38.947699 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0
07:19:38.950399 IP localmachine.53949 > server.30312: Flags [S], seq 2408213894, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
07:19:38.950438 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0
07:19:46.947769 IP server.30312 > localmachine.53949: Flags [S.], seq 1245200353, ack 2408213895, win 28200, options [mss 1410,nop,nop,sackOK,nop,wscale 7], length 0
看起来来自服务器的ACK永远不会到达客户端,并且客户端一直在尝试SYN,服务器一直在尝试响应,直到达到连接超时为止。这是关于我的知识挖掘的地方,我不确定如何处理此信息。是什么导致这种类型的问题,或者我还应该看什么?
@Gohu-是的,以上捕获是同时进行的,有2个连接,一个失败,一个没有。我可以增加100个连接,大约10个连接将失败,而其他90个则可以。
—
失忆症
tcpdump
?还是将所有失败的连接按相同的时间间隔分组?traceroute
在服务器上执行可能会有所帮助。tcpdump -e
可能还有助于查看mac地址。