如何debugging“发送HTTP请求,等待响应”?

我在一个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,但我仍然遇到同样的问题。

我如何debugging这样的东西,所以我可以find问题的根源或者一个模式?

你有没有试过等待看看什么HTTP状态码返回?

要debugging这种情况,打开2个terminal:在第一个,SSH到您的服务器,并键入:

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

(你也可以追加and src host <client_IP>来过滤垃圾请求)

在第二个,使用wget浏览您的网站,重现这个问题,切换到第一个terminal,然后按Ctrl + C。

将此.pcap文件复制到客户端,然后使用Wireshark打开,看看会发生什么。

如果你看到:

 HTTP request sent, awaiting response... 

这意味着DNS工作正常,TCP连接处于已build立状态,请求已发送。 我认为你的问题的原因是可能是繁忙的远程服务器。

正如@quanta所说,networking捕捉会给你更多的细节。 在Wireshark中,只需使用Follow TCP Stream来查看HTTP对话。 也要注意ICMP消息。

重新启动Apache服务器。 这应该解决问题。