Оптимізація префорка Apache - вибір правильного значення "MaxRequestsPerChild"


9

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

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

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

Після встановлення значення MaxRequestsPerChild40 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

Відповіді:


10

MaxRequestsPerChildнасправді корисно лише обмежити кількість витоку пам’яті з часом при виконанні динамічних сценаріїв. Якщо ви просто подаєте статичний вміст або дуже маленькі / прості сценарії, то, ймовірно, ви можете встановити його на 0 або дуже високий без особливого ефекту. Якщо ви використовуєте більші / складні сценарії, то встановлення його 0 / high призведе до того, що ваші процеси Apache споживають все більше і більше пам’яті. Точно наскільки більше залежить від вашої конкретної програми.

З іншого боку, встановлення його дуже низького може насправді призвести до дещо більшого використання процесора, оскільки процеси Apache постійно перезапускаються.

Я б зробив простий тест, щоб побачити, скільки пам'яті можуть використовувати ваші процеси. Встановіть MaxRequestsPerChild0 і перезапустіть Apache. Тест завантажте кілька сторінок і подивіться, яким початковим розміром користуються процеси Apache top. Перевірте ще раз через кілька годин / днів / тижнів (залежно від програми та переглядів сторінки) і побачите, як вона зростає. Якщо вона не дуже росте, то значення 0 або дуже велике значення MaxRequestsPerChildмає бути нормальним.

Якщо у вас є встановлений максимальний розмір для ваших процесів Apache (тобто ви хочете, щоб вони становили 50 Мб або менше), тоді ви можете робити те саме тестування з різними значеннями, MaxRequestsPerChildпоки не знайдете значення, яке Apache менше.


1
Як я можу перевірити завантаження сторінок і побачити розмір процесів Apache за допомогою Windows Server?
Ахмад Альфі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.