Журнал httpd, когда нет доступных воркеров

Есть ли способ каким-то образом вести журнал httpd, когда больше нет доступных рабочих?

Например, он может регистрировать дата и время, когда рабочие стали недоступны, и снова регистрируются, когда они снова становятся доступными.

Этот журнал будет использоваться для анализа потребностей в мощности.

0
задан 29 July 2016 в 23:21
1 ответ

Поскольку мы оба не смогли найти никакой документации о сервере , достигнута запись журнала MaxRequestWorkers , и я точно знал, что они там были (нажатие их в прошлом), я пробовал сам. Вот шаги, которые я предпринял для репликации сообщения:

mpm prefork

# 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 event

Итак, я также попробовал событие 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 worker

# 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

заключение

мы не нашли документации, но можем быть уверены, что она там есть: httpd2.4 заметит вас, если вы достигнете настройки MaxRequestWorkers .
Тем не менее, вам нужно внимательно следить за error.log, поскольку это сообщение не повторяется каждый раз, когда вы достигаете предела. Не уверен, будет ли он повторяться через определенный промежуток времени, но вы обязательно получите уведомление после перезапуска httpd2.4

2
ответ дан 4 December 2019 в 13:39

Теги

Похожие вопросы