В настоящее время я изучаю проблему с некоторыми из наших серверов, из-за которой процессы Apache в конечном итоге потребляют много памяти до того, что попадают в файл подкачки, что приводит к тому, что сервер не отвечает в случае пикового трафика. Глядя на конфигурацию Apache для конкретного проблемного сервера, я вижу это в файле conf:
StartServers 50 MinSpareServers 25 MaxSpareServers 90 ServerLimit 185 MaxClients 185 MaxRequestsPerChild 4000
На данном сервере в настоящее время запущено 185 резервных процессов Apache, которые занимают 6,2 ГБ из 7,2 ГБ, доступных на сервере. Но разве Apache не должен иметь только 90 активных процессов? Похоже, что вместо MaxSpareServers используется ServerLimit для определения количества активных процессов Apache на машине. Я бы понял, если бы он делал это во время пикового трафика, но даже когда на сервер почти нет трафика, на сервере всегда выполняется 185 процессов httpd.
Конфигурация: Apache 2.2.15 PHP 5.3.3 Redhat Linux Enterprise 6.3
Так почему же всегда выполняется 185 процессов Apache, когда мой параметр MaxSpare ограничен 90?
Ваша конфигурация, показанная на рисунке, не должна вызывать 185. Возможно, по какой-то причине у вас действительно так много запросов одновременно (например, медленные DoS-атаки HTTP). Посмотрите, что показывает mod_status для дальнейшего исследования (см. http://httpd.apache.org/docs/2.2/mod/mod_status.html о том, как его включить).