HTTP请求偶尔不会到达服务器。为什么?

时间:2010-01-18 19:06:46

标签: http httpwebrequest

我们在专用服务器上托管我们的网络服务。 有时(我会说20个中的1个)没有从服务器收到响应。 这会导致浏览器出现超时错误。

一个重要的细节:在这种情况下,Apache不会记录请求。

Apache没有负载,剩下大量的空闲内存和CPU能力。

[UPDATE] 我用tcpdump实用程序描述了这个问题。 这些是tcpdump追踪的好的和坏的会话。 两个实验中的请求是相同的。 好 - 服务器返回响应。 不好 - 没有回应,超时错误。

你知道为什么问题会从这些数据中发生吗? 如何进一步移动以更接近错误的来源?

我用123.45.67.890替换了我的真实IP地址

---- 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
--------

主持:SuperbHosting 操作系统:Ubuntu

3 个答案:

答案 0 :(得分:1)

我不认为这是你在SO或任何其他论坛上提出的问题 - 你应该首先向自己提出这个问题。

我建议运行一堆测试: 1)在较长时间内进行简单ping操作 2)在你的电脑和服务器上运行嗅探器 - 看看那里发生了什么。

根据结果,您可以尝试其他一些事情。

答案 1 :(得分:1)

数据包在路径的某处被丢弃。 Internet是一个非常大的网络,每个链路都是丢弃数据包的潜在点。除了没有从服务器返回的响应外,tcpdump不会告诉你任何事情。

您可以在UNIX上尝试traceroute或在Windows上尝试tracert以查找路由问题。您还可以尝试使用http://network-tools.com/之类的托管工具来查看它是否具有相同的数据包丢弃。如果没有,那么这将指向您的源网络是问题,而不是您的Web服务器所在的网络。

答案 2 :(得分:0)

我想说这是一个需要联系您的托管服务提供商的情况。他们很可能会要求您开始跟踪路线,但他们应该能够进一步帮助您。

正如hwatkins指出的那样,这绝对是一个网络问题。不幸的是,“网络问题”可能意味着服务器主机内部的TCP / IP堆栈,服务器与Internet之间的链接,或其他某些主干组件。

这是“你需要召唤骑兵”的经典案例。 :)

希望这有帮助。