Linux

如何調試“已發送 HTTP 請求,等待響應”?

  • October 19, 2018

我有一個 ADSL 連接上的 Linux 伺服器,我只是注意到有時我得到

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

當我使用wget或例如像firefox這樣的瀏覽器時。

wget按CTRL-C再試的情況下“解決問題”,而在firefox的情況下,重新載入頁面也會使頁面載入。

當它發生時,它似乎是隨機的。我嘗試將 DNS 更改為 Google 的 DNS,但我仍然遇到同樣的問題。

問題

如何調試類似的東西,以便找到問題的根源或模式?

你有沒有試過等待查看 HTTP 狀態碼返回什麼?

要調試這種情況,請打開 2 個終端:首先,通過 ssh 連接到您的伺服器並輸入:

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

(您也可以附加and src host <client_IP>過濾垃圾請求)

在第二個中,使用wget瀏覽您的網站,重現此問題並切換到第一個終端並按Ctrl+ C

將此文件複製.pcap到客戶端並使用 Wireshark 打開以查看會發生什麼。

如果你看到:

HTTP request sent, awaiting response...

這意味著 DNS 工作正常,TCP 連接處於已建立狀態並且請求已發送。我認為您的問題的原因是遠端伺服器可能很忙。

正如@quanta 所說,網路擷取將為您提供更好的細節。在 Wireshark 中,只需使用 Follow TCP Stream 即可查看 HTTP 會話。也要注意 ICMP 消息。

引用自:https://serverfault.com/questions/315122