Apache 2.4 ThreadsPerChild指令不更新工作人员数

时间:2016-11-15 11:04:34

标签: apache

我从Apache 2.2升级后尝试在Debian 8.2上配置我的新Apache 2.4.10实例。这次我使用event_mpm模块,从mpm_worker更改。

我已经设置了一切,所有路由似乎都运行正常。但是我开始在日志中看到这个错误:

[Tue Nov 15 10:05:10.743107 2016] [mpm_event:error] [pid 12345:tid 12345] AH00485: scoreboard is full, not at MaxRequestWorkers

它并没有一直发生,它每隔几个小时发生一次。 (我意识到这里存在一个错误:https://bz.apache.org/bugzilla/show_bug.cgi?id=53555。但是,如果我正确地阅读它,那么更多关于挂起服务器的事情,这不会发生在我身上。)

我不太了解这个错误,所以我查看了我的配置。看着它,我想我至少可以将ThreadsPerChild值更改为更高的值。

所以我的配置就是这样的:

<IfModule mpm_event_module>
StartServers         3
MinSpareThreads      150
MaxSpareThreads      500
ThreadLimit          128
ThreadsPerChild      25
MaxRequestWorkers    1200
MaxRequestsPerChild  0

到此:

<IfModule mpm_event_module>
StartServers         3
MinSpareThreads      150
MaxSpareThreads      500
ThreadLimit          128
ThreadsPerChild      75
MaxRequestWorkers    1200
MaxRequestsPerChild  0

据我所知,工作人员的数量是StartServers * ThreadsPerChild(3 * 75 = 225)。但是,当我访问我的服务器状态页面时,它仍然被列为有75名工人,即我的旧值25 * 3 = 75。

我重新加载了配置,重新启动了我的Apache,我仍然在页面上看到这样的状态:

enter image description here

正在处理32个请求+ 43个空闲工作人员= 75(3 * 25)。 不应该是225吗?我错过了什么吗?

我肯定已经加载了mpm_event模块:

$ apache2ctl -V
  Server MPM:     event
  threaded:     yes (fixed thread count)
  forked:     yes (variable process count)

所以:

  1. 这个错误是否值得担心,我可以通过提高ThreadsPerChild值来摆脱它吗?

  2. 为什么根据状态页面提高我的ThreadsPerChild值似乎无法提高我的工作人员数量?

1 个答案:

答案 0 :(得分:0)

  
      
  1. 这个错误是否值得担心,我可以通过提高ThreadsPerChild值来摆脱它吗?
  2.   

这个错误发生了,因为我的记分牌已经填满,因为我没有足够的工作人员来处理我的请求。我以为我正在增加它们,但我不是(见2),这就是为什么这个错误信息再次出现让我困惑的原因。

  
      
  1. 为什么根据状态页面提高我的ThreadsPerChild值似乎无法提高我的工作人员数量?
  2.   

我的问题是我的apache2.conf文件中定义了我的mpm_event模块设置,然后在该文件中我有了这个:

# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

这是加载默认文件:

/etc/apache2/mods-enabled/mpm_event.conf

因此,两个配置都被加载,因为&#34; IncludeOptional&#34;声明稍后在apache2.conf文件中,它正在加载并覆盖apache2.conf中的mpm_event设置和mpm_event.conf中定义的设置。我的apache2.conf文件中的mpm_event定义从未被使用过。

我只是删除了apache2.conf文件中的mpm_event配置,并将/etc/apache2/conf-available/mpm_event.conf文件更改为我想要的设置,重新启动了apache服务器,我的状态页面显示了新的更新配置

作为有用的旁注,我使用mpm_info模块来解决这个问题。我激活它,配置它像我的一个虚拟主机中的文档说,然后访问URL。这样我就可以看到所有正在加载的配置,并且可以立即看到我的mpm_event来自不同的配置文件。