没有可用工作者时的 httpd 日志

没有可用工作者时的 httpd 日志

当没有更多可用工作人员时,是否有办法以某种方式进行 httpd 记录?

例如,它可以记录工人不可用的日期和时间,并在工人再次可用时再次记录。

该日志将用于分析容量需求。

答案1

由于我们都找不到有关server reached MaxRequestWorkers setting日志条目的任何文档,而且我确信它们在那里(过去曾遇到过),所以我自己尝试了一下。以下是我复制消息所采取的步骤:

mpm 预分叉

# lxc launch ubuntu:16.04 test
# lxc exec test /bin/bash
# apt-get update ; apt-get -y install apache2
# a2enmod mpm_prefork
# cat >/etc/apache2/mods-available/mpm_prefork.conf <<EOF
<IfModule mpm_prefork_module>
        StartServers              1
        MinSpareServers           1
        MaxSpareServers           3
        MaxRequestWorkers         5
        MaxConnectionsPerChild    0
</IfModule>
EOF
# service apache2 restart
# apt-get install wrk
# wrk -d 60 -c 10 -t 10 http://localhost

现在看一下 /var/log/apache2/error.log - 您应该看到类似这样的一行:

[Fri Jul 29 20:59:18.304444 2016] [mpm_prefork:error] [pid 5419] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

我猜测错误消息的具体措辞取决于所使用的 mpm 以及服务器首先达到的限制。

mpm 事件

因此我也尝试了事件 mpm:

# a2dismod mpm_prefork
# a2enmod mpm_event
# cat >/etc/apache2/mods-available/mpm_event.conf <<EOF
<IfModule mpm_event_module>
        StartServers                     1
        MinSpareThreads          1
        MaxSpareThreads          2
        ThreadLimit             2
        ThreadsPerChild          2
        MaxRequestWorkers         5
        MaxConnectionsPerChild   0
</IfModule>
EOF
# service apache2 restart
# wrk -d 10 -c 50 -t 50 http://localhost

瞧瞧:

[Fri Jul 29 21:06:57.148442 2016] [mpm_event:error] [pid 5643:tid 139946523182976] AH00484: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

mpm 工作者

# a2dismod mpm_event
# a2enmod mpm_worker
# cat >/etc/apache2/mods-available/mpm_event.conf <<EOF
<IfModule mpm_worker_module>
        StartServers                     1
        MinSpareThreads          1 
        MaxSpareThreads          2 
        ThreadLimit              2
        ThreadsPerChild          2 
        MaxRequestWorkers        5
        MaxConnectionsPerChild   0
</IfModule>
EOF
# service apache2 restart
# wrk -d 10 -c 50 -t 50 http://localhost
# tail -1 /var/log/apache2/error.log
[Fri Jul 29 21:11:20.033223 2016] [mpm_worker:error] [pid 5805:tid 140034844882816] AH00287: server is within MinSpareThreads of MaxRequestWorkers, consider raising the MaxRequestWorkers setting

结论

我们没有找到相关文档,但可以肯定它确实存在:如果达到该MaxRequestWorkers设置,httpd2.4 会通知您。
不过,您需要密切关注 error.log,因为每次达到限制时,此消息不会重复出现。不确定它是否会在定义的时间段后重复出现,但您肯定会在 httpd2.4 重新启动后收到通知

相关内容