Назад | Перейти на главную страницу

Попытка уменьшить количество процессов apache 2

Я использую Debian 6 LAMP с apache mpm_prefork

у меня есть

Timeout 20
KeepAlive On
MaxKeepAliveRequests 80
KeepAliveTimeout 2

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    ServerLimit      500
    MaxClients            500
    MaxRequestsPerChild   1500
</IfModule>

с 4 ГБ оперативной памяти. Проблема в том, что Apache2 запускает слишком много процессов. Когда бы я ни делал top Я вижу большую часть времени только 1 запущенный, в то время как количество спящих процессов apache2 растет со временем (сейчас 437 процессов и их количество растет)

Могу ли я узнать, почему apache2 запускает новый процесс вместо того, чтобы использовать уже открытый? И как я могу сказать apache не открывать так много процессов?

Спасибо

Вы сказали Apache, что хотите иметь возможность обслуживать 500 клиентов одновременно и жестко ограничить пул клиентских процессов в 500.

Когда Apache получает запросы, он начинает расширять свой пул процессов, пока не приблизится к вашему пределу.

Поскольку вы используете сервер предварительной настройки, каждый процесс обрабатывает только один поток запросов, поэтому Apache необходимо поддерживать большое количество спящих процессов, чтобы обрабатывать до указанного вами количества одновременных клиентов. Они съедают много памяти.

Вы можете переключиться на многопоточную модель MPM, уменьшить значение MaxClients или увеличить объем оперативной памяти. Смотрите оба http://httpd.apache.org/docs/2.0/mod/prefork.html и http://httpd.apache.org/docs/2.0/mod/mpm_common.html.