HTTP-Anfragen erreichen den Server gelegentlich nicht. Warum?

HTTP-Anfragen erreichen den Server gelegentlich nicht. Warum?

Wir hosten unseren Webdienst auf einem dedizierten Server. Manchmal (ich würde sagen, 1 von 20) wird keine Antwort vom Server empfangen. Das führt dazu, dass der Browser mit einem Timeout-Fehler zurückfällt.

Ein wichtiges Detail: Die Anfrage wird in diesem Fall von Apache nicht protokolliert. Der Server wird nicht belastet, es sind noch genügend freier Speicher und CPU-Leistung vorhanden.

Ich habe den Problemfall mit dem Dienstprogramm tcpdump profiliert. Dies sind die „guten“ und „schlechten“ Sitzungen, die von tcpdump verfolgt werden. Die Anfrage ist in beiden Experimenten dieselbe. Gut – Server gibt Antwort zurück. Schlecht – keine Antwort, Timeout-Fehler.

Können Sie anhand dieser Daten erkennen, warum das Problem auftritt? Wie kann ich weiter vorgehen, um der Fehlerquelle näher zu kommen?

Ich habe meine echte IP-Adresse durch 123.45.67.890 ersetzt

---- Bad ----
12:23:36.366292 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:39.362394 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:45.365567 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,nop,sackOK>
--------

---- Good ----
12:27:07.632229 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620946 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620969 IP myserver.superbservers.com.www > 123.45.67.890.63914: S 2654770980:2654770980(0) ack 3581365571 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 6>
12:27:10.838747 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 1 win 4380
12:27:10.957143 IP 123.45.67.890.63914 > myserver.superbservers.com.www: P 1:213(212) ack 1 win 4380
12:27:10.957152 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 213 win 108
12:27:10.965543 IP myserver.superbservers.com.www > 123.45.67.890.63914: P 1:630(629) ack 213 win 108
12:27:10.965621 IP myserver.superbservers.com.www > 123.45.67.890.63914: F 630:630(0) ack 213 win 108
12:27:11.183540 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 631 win 4222
12:27:11.185657 IP 123.45.67.890.63914 > myserver.superbservers.com.www: F 213:213(0) ack 631 win 4222
12:27:11.185663 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 214 win 108
--------

Details zum Service.

Dies ist ein Wetterberichtsdienst. Er ist in Perl geschrieben und wird von MySQL unterstützt. Das Skript verwendet mehrere Module (von CPAN und unsere eigenen).

Der Code ist relativ einfach. Das Skript lädt das Wetter von einem anderen Server herunter, konvertiert das Datenformat und gibt eine XML-Antwort zurück. Das Wetter wird in MyISAM DB zwischengespeichert. Es gibt eine weltweite Standortdatenbank (INNODB), die ebenfalls über das Skript abgefragt werden kann.

Hosting: SuperbHosting Betriebssystem: Ubuntu

Antwort1

Versuchen Sie es mittcpdumpoderWiresharkum den Netzwerkverkehr zu überwachen. Auf diese Weise wissen Sie zumindest, ob ein Netzwerkproblem vorliegt. Überprüfen Sie beispielsweise, ob die Anforderung überhaupt den Computer erreicht.

Außerdem ist die Anzahl der Verbindungen, die die meisten Browser standardmäßig zu ein und demselben Server herstellen können, auf 2 begrenzt. Wenn Ihre Seite einige JavaScript-Objekte enthält, die „vergessen“, Verbindungen usw. zu schließen, kann es sein, dass der Browser die Anfrage nie sendet.

Antwort2

Können Sie Ihre Anfrage nur mit IP-Adressen versuchen? Wenn ja, kann dies helfen, das Problem einzugrenzen.

Kommen alle Anfragen vom selben Standort, an dem das Problem auftritt? Wenn ja, versuchen Sie es an einem anderen Standort, vielleicht einem Laptop in einem Starbucks oder so. Wenn das Problem von mehr als einem Standort aus auftritt, mit unterschiedlichen Browsern, auf einer sehr einfachen Seite ohne AJAX oder kompliziertes Javascript, ist das eine wertvolle Information.

Wenn die Verwendung der IP-Adresse zuverlässig funktioniert, handelt es sich wahrscheinlich um DNS. Die Kenntnis des verwendeten Domänennamens kann bei der Eingrenzung helfen.

Antwort3

Ich würde mich für Michael Gaff entscheiden und dann etwas Geld auf das Hosting-Unternehmen setzen – diese Art von Verkehrsproblemen treten sehr leicht aufgrund von defekten Patchpanels, Netzwerkkarten, Problemen mit Netzwerkkartentreibern oder schlechter Verkabelung auf, neben tausend anderen Infrastrukturproblemen.

Ich gehe davon aus, dass Sie dies von verschiedenen Standorten aus versucht haben (oder dass Ihnen von anderen Standorten Berichte mit denselben Problemen vorliegen) und trotzdem das gleiche Problem aufgetreten ist. Wir können also ein Problem auf Ihrer Seite ausschließen, richtig?

Ich bin ein Hardware-Freak und neige dazu, Hardwarefehler als Ursache für seltsame Software- und Netzwerkprobleme und Massenvernichtung im Allgemeinen zu betrachten.

Antwort4

Das Problem lag in einer großen Anzahl offener TCP-Verbindungen, wodurch neue Verbindungen gelegentlich unterbrochen wurden.

verwandte Informationen