Оптимизация Apache prefork - Выбор правильного значения MaxRequestsPerChild

9

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

Сначала я попытался установить значение 4000, но на сервере возникли проблемы с обработкой многих запросов, поэтому я начал повышать его. На данный момент мои настройки:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  40000
</IfModule>

После установки MaxRequestsPerChild40000 серверу удалось обработать больше соединений, не используя больше памяти / процессора.

Может кто-нибудь сказать мне, пожалуйста, является ли это значение слишком высоким или это нормально, чтобы иметь такое высокое значение?

Спасибо!

Информация об ОС:

[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
Куф
источник

Ответы:

10

MaxRequestsPerChildдействительно полезно ограничивать количество утечек памяти с течением времени при запуске динамических сценариев. Если вы просто работаете со статическим контентом или очень маленькими / простыми сценариями, вы, вероятно, можете установить его на 0 или очень высокий без особого эффекта. Если вы запускаете большие / сложные сценарии, тогда его значение 0 / high приведет к тому, что ваши процессы Apache будут занимать все больше и больше памяти. Точно, насколько больше зависит от вашего конкретного приложения.

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

Я бы сделал простой тест, чтобы увидеть, сколько памяти могут использовать ваши процессы. Установите MaxRequestsPerChild0 и перезапустите Apache. Протестируйте загрузку нескольких страниц и посмотрите, какой начальный размер используют процессы Apache top. Проверьте снова через несколько часов / дней / недель (в зависимости от вашего приложения и просмотров страниц) и посмотрите, как оно растет. Если он не очень сильно растет, то значение 0 или очень большое значение MaxRequestsPerChildдолжно подойти.

Если у вас установлен максимальный размер для ваших процессов Apache (т. Е. Вы хотите, чтобы они составляли 50 МБ или меньше), то вы можете выполнить один и тот же тест с различными значениями, MaxRequestsPerChildпока не найдете значение, которое сохраняет Apache меньше этого значения.

uesp
источник
1
Как я могу проверить загрузку страниц и увидеть размер процессов Apache с помощью Windows Server?
Ахмад Альфи