Я пытаюсь оптимизировать наши веб-серверы, чтобы обрабатывать как можно больше подключений. Я прочитал много сообщений и заметок об Apache. Я пытаюсь понять, какое значение выбрать для MaxRequestsPerChild
.
Сначала я попытался установить его на 4000, но у сервера возникли проблемы с обработкой большого количества запросов, поэтому я начал поднимать его. На данный момент мои настройки:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 40000
</IfModule>
После установки MaxRequestsPerChild
до 40 000 серверу удалось обработать больше подключений, не используя при этом больше памяти / процессора.
Кто-нибудь может сказать мне, пожалуйста, является ли это значение слишком высоким или это нормально иметь такое высокое значение?
Спасибо!
Информация об ОС:
[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
total used free shared buffers cached
Mem: 3814660 3502968 311692 0 144368 2970468
-/+ buffers/cache: 388132 3426528
Swap: 5210104 0 5210104
MaxRequestsPerChild
действительно полезен только для ограничения объема утечки памяти с течением времени при запуске динамических сценариев. Если вы просто обслуживаете статический контент или очень маленькие / простые скрипты, вы, вероятно, можете установить его на 0 или очень высокий без особого эффекта. Если вы запускаете более крупные / сложные сценарии, то установка 0 / высокий приведет к тому, что процессы Apache будут потреблять все больше и больше памяти. Насколько больше зависит от вашего конкретного приложения.
С другой стороны, установка очень низкого уровня может фактически привести к немного большей загрузке ЦП, поскольку процессы Apache постоянно перезапускаются.
Я бы провел простой тест, чтобы узнать, сколько памяти могут использовать ваши процессы. Устанавливать MaxRequestsPerChild
на 0 и перезапустите Apache. Протестируйте загрузите несколько страниц и посмотрите, какой исходный размер используют процессы Apache top
. Проверьте еще раз через несколько часов / дней / недель (в зависимости от вашего приложения и просмотров страниц) и посмотрите, как он растет. Если он не растет очень сильно, то 0 или очень большое значение для MaxRequestsPerChild
все должно быть в порядке.
Если у вас установлен максимальный размер для ваших процессов Apache (т.е. вы хотите, чтобы они составляли 50 МБ или меньше), вы можете выполнить тот же тест с различными значениями MaxRequestsPerChild
пока вы не найдете значение, при котором Apache будет меньше этого.