Benötigen Sie Hilfe bei der Ermittlung eines zufälligen Verbindungszeitlimits auf einem Server

480
amnesia

Ich habe dieses Problem beim Versuch entdeckt, einen benutzerdefinierten node.js-Websocket-Server zu laden, bei dem einige Sockets keine Verbindung herstellen können (sie haben das Verbindungszeitlimit überschritten). Es scheint sich nicht auf die aktuelle Last zu beziehen, da ich den Fehler auch nur bei einem einzelnen Client-Thread-Test nach dem Zufallsprinzip erhalten kann.

Dies scheint in keinem Zusammenhang mit node.js zu stehen, da ich auch das Problem des Lasttests Nginx reproduzieren kann, das eine statische Seite auf demselben Server bereitstellt. Die Gesamtfehlerrate scheint zwischen 7 und 10% der eingehenden Verbindungen zu liegen.

Dies scheint auf meinem lokalen Client-Computer oder der Internetverbindung kein Problem zu sein, da ich das Problem von einem anderen Computer an einem anderen Ort reproduzieren kann.

Ich habe alle normalen Parameter (Somaxconn, max. Offene Dateien usw.) überprüft, und soweit ich das beurteilen kann, bin ich bei weitem nicht an Grenzen gestoßen. Ich sehe keine Einträge in syslog, die sich auf dieses Problem beziehen. Ich habe auch versucht, iptables vollständig zu deaktivieren, um Firewall-Probleme zu vermeiden.

Der Server ist Ubuntu LTS 16.04 (i7, 32GB) und ist ein dedizierter Computer in einer Colo-Einrichtung. Bevor ich mich mit ihnen in Verbindung setzte, wollte ich wissen, ob ich mehr Informationen darüber finden könnte, ob dies ein Problem auf der Ebene der Betriebssysteme, der Maschinen oder des Netzwerks ist.

Ich konnte einen tcpdump einer fehlgeschlagenen Verbindung erfassen, bin mir aber nicht sicher, was ich davon halten soll:

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  

Es sieht so aus, als würde das ACK vom Server niemals zum Client gelangen, und der Client versucht immer wieder, SYN zu starten, und der Server versucht solange zu antworten, bis das Verbindungszeitlimit erreicht ist. Hier geht es um mein Wissen und ich bin mir nicht sicher, was ich mit diesen Informationen anfangen soll. Was könnte diese Art von Problem verursachen oder was sollte ich sonst noch beachten?

1
Sieht aus wie ein asymmetrisches Routing oder ein Duplikat der Client-IP. Können Sie in Ihrem `tcpdump` gleichzeitig eine ausgefallene Verbindung und eine funktionierende Verbindung feststellen? Oder sind alle fehlerhaften Verbindungen in gleichen Zeitintervallen gruppiert? `traceroute` kann auf dem Server ausgeführt werden. `tcpdump -e` kann auch dabei helfen, MAC-Adressen zu sehen. Gohu vor 6 Jahren 0
@Gohu - Ja, das oben genannte Capture wurde mit zwei Verbindungen gleichzeitig aufgenommen, eine davon ist fehlgeschlagen und eine nicht. Ich kann 100 Verbindungen aufbauen und etwa 10 werden fehlschlagen und die anderen 90 werden in Ordnung sein. amnesia vor 6 Jahren 0

0 Antworten auf die Frage