Wie debugge ich "HTTP-Anfrage gesendet, wartet auf Antwort"?

7

Ich habe einen Linux-Server mit einer ADSL-Verbindung und habe gerade bemerkt, dass ich manchmal bekomme

Connecting to example.com|xxx.xxx.xxx.122|:80... connected.
HTTP request sent, awaiting response...

wenn ich wgetoder zB einen Browser wie Firefox benutze .

Im Falle von wgetSTRG + C drücken und dann versuchen Sie es erneut „löst das Problem“, und im Fall von firefox, Neuladen der Seite macht auch die Seite zu laden.

Es scheint zufällig zu sein, wenn es passiert. Ich habe versucht, das DNS in das DNS von Google zu ändern, aber dort treten immer noch dieselben Probleme auf.

Frage

Wie debugge ich so etwas, damit ich die Ursache des Problems oder vielleicht ein Muster finden kann?

Sandra
quelle

Antworten:

7

Haben Sie jemals versucht abzuwarten, welcher HTTP-Statuscode zurückgegeben wird?

Um diesen Fall zu debuggen, öffnen Sie 2 Terminals: Geben Sie im ersten ssh an Ihren Server ein und geben Sie Folgendes ein:

# tcpdump -vv -s0 tcp port 80 -w /tmp/example.pcap

(Sie können auch anhängen and src host <client_IP>, um Junk-Anfragen zu filtern)

Im zweiten wgetFall können Sie Ihre Website durchsuchen, dieses Problem reproduzieren, zum ersten Terminal wechseln und Ctrl+ drücken C.

Kopieren Sie diese .pcapDatei auf den Client und öffnen Sie sie mit Wireshark, um zu sehen, was passiert.

Quanten
quelle
Das sollte interessant sein! Ich habe nicht versucht, eine Auszeit zu lassen. Wie lange würde es dauern, bis das Timeout abgelaufen ist? 10 Minuten? 1 Stunde?
Sandra
1

Wenn du siehst:

HTTP request sent, awaiting response...

Dies bedeutet, dass der DNS einwandfrei funktioniert, dass die TCP-Verbindung hergestellt ist und die Anforderung gesendet wurde. Ich denke, dass die Ursache Ihrer Probleme der Remote-Server ist, der möglicherweise ausgelastet ist.

Wie @quanta sagte, gibt Ihnen eine Netzwerkerfassung bessere Details. Verwenden Sie in Wireshark einfach Follow TCP Stream, um die HTTP-Konversation anzuzeigen. Achten Sie auch auf ICMP-Nachrichten.

Mircea Vutcovici
quelle
0

Starten Sie Ihren Apache Server neu. Dies sollte das Problem lösen.

Abhishek Goel
quelle
Klingt nach Windows. Versuchen Sie im Zweifelsfall Alt-Ctl-Löschen.
Pauljohn32
0

Ich hatte ein sehr ähnliches Problem mit einer frisch bereitgestellten AWS-Instanz:

apt installwürde scheitern und behaupten, dass es kein Paket abrufen konnte. Wenn ich versuchte, das Paket manuell mit abzurufen wget, blieb es manchmal auf unbestimmte Zeit hängen und war manchmal sofort erfolgreich (nachdem es auf unbestimmte Zeit hängen geblieben war).

Ein Neustart des Servers hat nicht geholfen. Dann habe ich die Instanz beendet und erneut bereitgestellt. Danach hatte ich kein Problem mit der neuen Instanz.

Stelle dir das vor.

Zoltán
quelle