WordPress阻塞了Apache

好吧,我讨厌成为无奈的阿帕奇小白,但我感到难过。

昨天晚上突然,我们的WordPress网站停了下来。 我重新启动了它,并观看了几分钟,这似乎是正确的,所以我把它放在一边。 然后我醒来,发现它又下降了。 经过一番调查,我发现尽pipe当时每分钟只有20个左右的请求,Apache仍然为每个请求分配一个新的实例,直到碰到MaxClients,然后这个实例只是坐在那里无所事事。 整个系统在此时的CPU利用率为0.1%。 如果我login到MySQL并查看进程列表,我可以看到每个httpd的对应数据库连接,所以看起来像脚本永远不会结束。 但是,如果我在请求一个静态文件或者甚至是一个简单的“Hello world”PHP文件到达MaxClients之前,那么这个请求将会很顺利。

我真的不知道该看什么,因为这里没有其他人拥有技术上的先进技术,甚至可以安装插件,而且我知道我至less在几天之内没有触及它 – 所以我不知道甚至不知道可能导致问题的原因。

该设置是Apache 2.2.3 / prefork与mod_php 5.2.6。 这里是明显相关的设置(让我知道,如果你有任何其他知道):

httpd.conf文件

Timeout 20 KeepAlive Off <IfModule prefork.c> StartServers 2 MinSpareServers 1 MaxSpareServers 3 MaxClients 50 MaxRequestsPerChild 2000 </IfModule> 

php.ini中

 max_execution_time = 600 ; Set so high for large file uploads max_input_time = 600 ; Set so high for large file uploads memory_limit = 128M ; Set so high for large file uploads log_errors = On 

我已经尝试了几件事情:

  • 增加MaxClients
    • 这只是导致Apache吃掉所有1.6 GB的RAM,然后像以前一样做
  • 将max_execution_time和max_input_time剪切为1​​5,将memory_limit剪成32M
    • 没有什么区别 – httpd实例还是不朽的
  • 重新安装WordPress
    • 没有任何区别
  • tail -f ing error_log
    • 除了达到MaxClients之外,没有任何错误报告
  • tail -f access_log看看我们是否被DDOSed或什么的
    • 在发生这种情况时,stream量确实很低

我觉得我一定要在面前丢掉一些东西,但是对于我的生活,我无法弄清楚这里出了什么问题。 所以我希望有一点在系统pipe理方面更有经验的人看到我以前做错了什么。

你在Apache中的php脚本突然变得很慢。 你需要找出你的瓶颈。 由于你没有很高的CPU使用率 – 它可能是交换,磁盘或networkingIO速度较慢,数据库服务器速度较慢,DNS请求缓慢等诸多原因。

首先检查所有日志是否有可疑错误。 如果你仍然不知道 – 你可以尝试对apache进程进行调整,以查看debugging开始时哪个调用很慢。

好,抱歉keepalives问题..什么“显示processlist”在mysql服务器上说? 通常一个locking/损坏的表格可以解释这个问题。