我从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,我仍然在页面上看到这样的状态:
正在处理32个请求+ 43个空闲工作人员= 75(3 * 25)。 不应该是225吗?我错过了什么吗?
我肯定已经加载了mpm_event模块:
$ apache2ctl -V
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
所以:
这个错误是否值得担心,我可以通过提高ThreadsPerChild值来摆脱它吗?
为什么根据状态页面提高我的ThreadsPerChild值似乎无法提高我的工作人员数量?
答案 0 :(得分:0)
- 这个错误是否值得担心,我可以通过提高ThreadsPerChild值来摆脱它吗?
醇>
这个错误发生了,因为我的记分牌已经填满,因为我没有足够的工作人员来处理我的请求。我以为我正在增加它们,但我不是(见2),这就是为什么这个错误信息再次出现让我困惑的原因。
- 为什么根据状态页面提高我的ThreadsPerChild值似乎无法提高我的工作人员数量?
醇>
我的问题是我的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来自不同的配置文件。