“AH00485:记分牌已满,MaxRequestWorkers没有”的含义是什么?

我的环境

  • CentOS 6.4 X86_64
  • Apache 2.4.4
  • PHP 5.4.16(FPM)
  • 2个Intel Xeon E5-2620 @ 2.00GHz(8核,每个处理器16个线程)
  • 48GB RAM注册内存。
  • 3硬盘15RPM 145GB在RAID0(由BIO

有趣的variables

<IfModule mpm_event_module> StartServers 2 ThreadLimit 196 MinSpareThreads 96 MaxSpareThreads 192 ThreadsPerChild 96 MaxRequestWorkers 192 MaxConnectionsPerChild 96 </IfModule> 

Apache服务器状态

服务器版本:Apache / 2.2.4(Unix)OpenSSL / 1.0.1e mod_fastcgi / mod-fastcgi-SNAP-0910052141
服务器内置:2013年5月24日16:48:07


现在时间:星期一,17-Jun-2013 09:48:11 COT
重新开始时间:星期一,17-Jun-2013 08:35:14 COT
父服务器configuration。 一代:1
父级服务器MPM生成:0
服务器正常运行时间:1小时12分57秒
服务器负载:0.05 0.10 0.09
总访问量:14144 – 总stream量:349.7 MB
CPU使用率:u.28 s.25 cu0 cs0 – .0121%CPU负载
3.23个请求/秒 – 81.8 kB /秒 – 25.3 kB /请求
目前正在处理1项请求,有191名空闲工人

  PID | Connections | Threads | Async connections | total | accepting | busy | idle | keep-alive | closing ============================================================== 18997 | 3 | yes | 1 | 95 | 0 | 3 18485 | 0 | yes | 0 | 96 | 0 | 0 ============================================================== Sum | 3 | | 1 | 191 | 0 | 3 

错误日志

错误消息是

[Mon Jun 17 09:32:45.680842 2013] [mpm_event:error] [pid 8574:tid 140185091581760] AH00485:记分牌已满,而不是MaxRequestWorkers

这每隔几秒出现一次。 我不明白 我该如何解决?

我们在Apache 2.4.6上遇到同样的问题。 在监视服务器并将设置调整了几个小时后,我们发现Apache可能有一个错误。 看来发生的事情是,服务器进程偶尔会进入G状态(正常完成)并重新启动接受新的请求,这是正常的。 不正常的是,由于某种原因,这可能需要几分钟才能重新启动。 如果你只有几个服务器进程在运行,并且它们都同时进入G状态,那么你的记分板就会填满,你将无法再服务于更多的请求。

我们所做的是增加服务器的数量,所以他们都没有机会同时进入G状态。 还要确保为每个服务器进程分配至less25个线程( MaxRequestWorkers ),因为这似乎是默认值(即,如果是5个Servers x 25个ThreadsPerChild = 125个MaxRequestWorkers )。 你可以改变ThreadsPerChild如果你喜欢,我们把它留在默认状态。 如果您没有分配足够的线程,则额外的服务器将无法启动。 我们离开MinSpareThreads的默认值是25,而MaxSpareThreads的默认值是75.如果你修改这些设置, MaxSpareThreads的值必须大于或等于MinSpareThreadsThreadsPerChild的总和。 MaxRequestWorkers必须等于或小于ServerLimit

这是我们的工作,但它可能不是你最好的configuration。

 StartServers 3 MinSpareServers 5 MaxSpareServers 10 ServerLimit 250 MaxRequestWorkers 250 MaxConnectionsPerChild 1000 KeepAlive Off 

编辑:这是httpd的mpm_event模块中确认的错误 ,可能无法通过configuration修复 。
链接的bugtracker条目有一个假定的补丁和更多的讨论如何解决这个问题,直到新版本的事件模块正式发布。

看到同样的问题。

 Apache 2.4.7-1ubuntu4.4 on Ubuntu 14.04 Server Version: Apache/2.4.7 (Ubuntu) Server MPM: event Server Built: Mar 10 2015 13:05:59 

我们特别可以通过重新加载apache来引起这种行为。

然后我们看到,有几个旧的过程不停止:

 root 28192 0.0 0.8 103772 8648 ? Ss Mar16 0:03 /usr/sbin/apache2 -k start www-data 2530 0.3 2.1 865188 21516 ? Sl 06:26 0:54 \_ /usr/sbin/apache2 -k start www-data 2531 0.2 2.1 865436 21892 ? Sl 06:26 0:51 \_ /usr/sbin/apache2 -k start www-data 3299 0.3 2.0 864140 20628 ? Sl 06:46 0:51 \_ /usr/sbin/apache2 -k start www-data 7305 0.3 2.1 865100 21504 ? Sl 08:36 0:37 \_ /usr/sbin/apache2 -k start www-data 11952 0.2 1.8 863004 19268 ? Sl 10:46 0:06 \_ /usr/sbin/apache2 -k start www-data 13284 0.0 0.6 103772 6692 ? S 11:18 0:00 \_ /usr/sbin/apache2 -k start www-data 13553 2.1 2.0 866156 21248 ? Sl 11:23 0:01 \_ /usr/sbin/apache2 -k start 

注意“较旧”和“较新”的PID和开始时间。 ^^

 PID Connections Threads Async connections total accepting busy idle writing keep-alive closing 7305 14 no 0 0 0 0 0 2530 13 no 0 0 0 0 0 3299 7 no 0 0 0 0 0 13553 65 no 17 8 0 25 25 2531 15 no 0 0 0 0 0 11952 10 no 0 0 0 0 0 Sum 124 17 8 0 25 25 GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGGGGGGGGW_WWWW__W_W_W_WWWWWWW__WWGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGGGG