我有以下问题:从Hackage检索页面时,出现很大的延迟(大约30秒)。进一步的请求很快,但是如果我在几分钟内没有连接到它,问题就会再次出现。
关于此问题的有趣之处在于:
- 它特定于该特定站点(Hackage)—我在任何其他站点上都没有遇到类似的问题(并且我访问了很多站点);
- 它似乎是特定于我的ISP的-当我从其他地方连接时,就没有这种问题;
它与DNS或连接性问题无关-实际上,TCP连接可以快速建立;从以下示例数据包捕获中可以看出,HTTP响应花费的时间太长:
1 0.000000000 192.168.1.101 -> 66.193.37.204 TCP 66 41518 > http [SYN] Seq=0 Win=13600 Len=0 MSS=1360 SACK_PERM=1 WS=16 2 0.205708000 66.193.37.204 -> 192.168.1.101 TCP 66 http > 41518 [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1440 SACK_PERM=1 WS=128 3 0.205759000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=1 Ack=1 Win=13600 Len=0 4 0.205846000 192.168.1.101 -> 66.193.37.204 HTTP 158 GET /packages/hackage.html HTTP/1.1 5 0.406461000 66.193.37.204 -> 192.168.1.101 TCP 54 http > 41518 [ACK] Seq=1 Ack=105 Win=5888 Len=0 6 28.433860000 66.193.37.204 -> 192.168.1.101 TCP 1494 [TCP segment of a reassembled PDU] 7 28.433904000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=105 Ack=1441 Win=16480 Len=0 8 28.434211000 66.193.37.204 -> 192.168.1.101 HTTP 1404 HTTP/1.1 200 OK (text/html) 9 28.434228000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=105 Ack=2791 Win=19360 Len=0 10 28.434437000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [FIN, ACK] Seq=105 Ack=2791 Win=19360 Len=0 11 28.635146000 66.193.37.204 -> 192.168.1.101 TCP 54 http > 41518 [FIN, ACK] Seq=2791 Ack=106 Win=5888 Len=0 12 28.635191000 192.168.1.101 -> 66.193.37.204 TCP 54 41518 > http [ACK] Seq=106 Ack=2792 Win=19360 Len=0
(以pcap-ng格式捕获数据包)。此捕获显示了简单操作期间发生的情况
curl http://hackage.haskell.org/packages/hackage.html
。
我在路由器后面也没关系-直接连接时也一样。连接类型为PPPoE。
我在运行Linux和Windows的3台计算机上重现了该问题。
如何诊断这样的问题?