Я работаю на хобби веб-сервере с древней Blue & White G3 / 300 под управлением Debian PPC Squeeze 2.6.30. После перезапуска производительность в течение некоторого времени нормальная, но со временем она становится все более и более застрявшей. Сейчас он работает без перерыва на 76 дней, и основной причиной этого является использование памяти более чем 10 процессами apache2.
Я думаю, что мне нужно уменьшить значения для StartServers
, MinSpareServers
и / или MaxSpareServers
, но я не уверен, какой из них настроить, и есть три раздела для каждого в зависимости от того, какой модуль mpm используется.
Как мне узнать, какой из следующих разделов мне нужно изменить, и какие разумные значения имеют, учитывая, что на коробке имеется 448 МБ физической памяти (странная история обновления по одной на 64, 128 и 256 флешек)?
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
В моем apache2.conf нет других экземпляров StartServers, но ни один из этих модулей mpm не появляется в mods-available
или mods-enabled
. Идеи?
Спасибо!
источник
Ответы:
400 МБ не так много для веб-сервера в наши дни - вы можете подумать о замене коробки :)
Тем не менее, если ваше использование памяти вздувается, у вас, вероятно, где-то есть утечка памяти - для быстрого теста посмотрите на размер процессов httpd сейчас, затем остановите / запустите Apache и посмотрите, не намного ли они меньше. Если они наблюдают за ними в течение нескольких дней и смотрят, растут ли они.
Если это утечка памяти, то реальное решение для этого - найти и исправить утечку памяти, но, поскольку это, как правило, боль в заднице, вы также можете настроить
MaxRequestsPerChild
что-то другое, кроме 0 (неограниченно). Это убьет работников Apache, когда они будут обслуживать фиксированное количество запросов (что заставит их отказаться от утечки памяти в процессе.Начните с больших значений (в тысячах или около того) и переходите к сотням. Если вы получаете менее 100 запросов на ребенка, утечка памяти достаточно велика, чтобы гарантировать ее фактическое исправление, так как снижение производительности от постоянного уничтожения и повторного появления работников Apache будет значительным.
Re: какой MPM настроить, ответ почти наверняка
prefork
.Вы можете бежать
httpd -V
и искатьServer MPM:
линию, которая скажет вам наверняка.источник
Чтобы ограничить использование памяти процессом apache, вам нужно настроить MaxClients.
Общее правило: (Макс. Требуемая память) / (Использование памяти на 1 процесс Apache) = # Макс. Клиентов
В конце вам также нужно настроить MaxSpareServers <= Max Clients .
Использование памяти одним процессом сильно зависит от загруженных вами модулей (php и т. Д.), Поэтому вы можете установить максимальное количество клиентов немного ниже.
источник