На моем сервере работает Ubuntu 18.04.5 LTS со стеком LAMP (PHP 7.4) и версией apache 2.4.29 с использованием Prefork MPM. Мой сервер имеет 16 процессоров и 29 ГБ оперативной памяти. На этом сервере размещено 258 веб-сайтов.
Всякий раз, когда я перезагружаю свой сервер, я замечаю (используя команду top), что apache создает сумасшедшее количество процессов. Это полностью перегружает сервер. Это ТОЛЬКО происходит, когда я перезагружаю сервер или вручную останавливаю apache (служба apache2 останавливается), а затем запускаю apache (запуск службы apache2).
Обычно это вывод top (в обычные часы):
После перезагрузки или остановки и запуска apache вручную средняя загрузка превышает 126,4! Медленно (примерно через 10-15 минут) приходит в норму. В течение первых 5 минут после перезагрузки или остановки и запуска apache нагрузка просто неуклонно растет, пока не достигнет 126-130.
Вот моя конфигурация MPM (/etc/apache2/mods-enabled/mpm_prefork.conf):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
Также KeepAlive включен, MaxKeepAliveRequests равен 100, а KeepAliveTimeout равен 2.
Что очень странно, так это то, что я сделал точную копию сервера и разместил на копии несколько сайтов (6 веб-сайтов), и когда я перезагружаюсь или запускаю и останавливаю apache на этом сервере-копии, такого поведения не происходит. Это ТОЧНАЯ копия упомянутого выше сервера, просто на нем размещается всего 6 веб-сайтов (ГОРАЗДО меньше трафика) вместо 258.
Может ли эта проблема быть вызвана слишком большим количеством клиентских подключений, ожидающих ответа apache во время перезагрузки, и когда сервер apache, наконец, возвращается, он наводняет apache подключениями?
Поможет ли в этом увеличение значений в моей конфигурации MPM? Я проверял журналы и никогда не пересматривал MaxRequestWorkers.