基本的Apache httpd服务器设置变慢,需要频繁重启的图像

我有一个在RHEL 5.3上运行的Apache httpd服务器。 我正在使用此服务器为另一个httpd实例上运行的网站提供静态内容(图像)。 在公共networking目录中有几个图像,就是这样。 启动后的一段时间,服务器向浏览器提供图片的速度非常缓慢,并且在试图服务于16×16 png时经常挂起几分钟。

debugging这个问题最好的方法是什么?

我已经在机器上运行了顶部 ,以validation是否有足够的可用内存,并提供CPU。 机器不会进入交换,而且当通过浏览器请求图像时,httpd进程只占用CPU和内存几秒钟。 但是图像只有几分钟后才能返回。

httpd进程的重启解决了这个问题,图像加载很快。

这似乎是可能的最简单的Web服务器设置。 这个问题可能是什么?

谢谢

更新httpd.conf设置:

Timeout 10 KeepAlive On MaxKeepAliveRequests 150 KeepAliveTimeout 15 ServerLimit 3 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> 

几个问题:

你有没有对Apache.conf文件进行任何调整? 你正在使用哪个Apache MPM?
目前在Apache.conf文件中为以下参数设置了哪些参数:

 Timeout KeepAlive MaxKeepAliveRequests KeepAliveTimeout MinSpareServers MaxSpareServers StartServers MaxClients MaxRequestsPerChild 

诊断build议:

  1. 你已经检查过CPU和内存,但是同时观察磁盘带宽和其他统计信息也是个好主意(我build议dstat -af)。 您正在寻找诸如大量磁盘读取或写入,大量上下文切换或中断等其他度量,这些度量在服务器启动和服务器出现故障时的行为之间差别很大。

  2. 另一件要检查的事情是弄清楚这个行为是否是时间传递的函数,或者是请求的数量,还是两者兼而有之?

    • 启动服务器,不要求任何图像几个小时,然后请求一个图像,请求是快速的,还是?
    • 启动服务器,尽可能快地请求映像(使用环回来避免networking延迟)并查看需要多长时间才能达到某个预定的慢度(例如10秒响应)
  3. testing是否是networking问题。 当服务器遇到问题(例如10秒响应)时,请通过回送接口请求图像。 如果它回来快,看networking。 如果速度慢,您可能会忽略主机之外的networking问题。

使用mod_status来检查和监视服务器状态。 我猜大部分连接都在等待状态KeepAlive。 您可以尝试将其closures或closures,如KeepAliveTimeout 4。