为什么服务器没有响应?

我们的服务器偶尔会拒绝提供简单的HTML页面。

这是在相当多的请求期间发生的。 但是,处理器不是重载,并有大量的可用内存。 这个错误似乎平均出现了50个请求中的1个,这取决于服务器负载。

我需要find问题的根源,并采取适当的行动来消除这个问题。

我怀疑问题来源是大量的传入networking数据包。 平均每秒有5000个数据包。 stream量 – 2 MBits / sec这可能是错误的原因吗?

有一件有趣的事情,如果服务器无法响应,请求string不logging到Apache的access.log。

错误可以从几台客户端计算机上重复使用。 DNS不涉及,因为我已经通过IP访问了服务器。

我已经用tcpdump实用程序描述了这个问题。 这些是由tcpdump跟踪的好的和坏的会话。 这两个实验的要求是一样的。 良好 – 服务器返回响应。 坏 – 没有反应,超时错误。

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

Hoster:超棒的主机

操作系统:Ubuntu

服务器参数:E6300 CONROE 1.86GHZ 2 X 1MB CACHE 1066 1GB DDR2 667MHZ

这是一个链接到我们使用http://repkin5.snow.prohosting.com/apache.txt的 apacheconfiguration文件

这是服务器状态报告超时错误后立即采取。 http://repkin5.snow.prohosting.com/server-status.htm只有10个子服务器用完了120个,所以有足够的空间来处理新的请求。

VMSTAT

 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- rb swpd free buff cache si so bi bo in cs us sy id wa 0 0 8900 725900 8468 65684 0 0 5 18 11 33 4 3 92 1 

  • 有一件有趣的事情,如果服务器无法响应,请求string不logging到Apache的access.log。

这听起来像一个networking问题。 服务器应该logging它收到的任何请求,即使它由于某种原因不能回答。 您可能要validation您没有看到Web服务器上的数据包丢失。

在TCP连接的可用内核缓冲区很低的情况下,你有一个小的机会。 我希望有一些日志logging(login到服务器,testing,直到你有一个“没有回应”,然后运行dmesg ,看看是否有什么看起来适用)。

要调整networking设置, 这可能是一个起点 。

正如克里斯·纳瓦(Chris Nava)所说的,可能值得确保你不仅仅是在networking上丢包,所以通过ping来开始检查(回应一个ping,唉,跟处理一个TCP包并不是一回事)。