Модуль Apache MPM розшифровується як Apache Multi-Processing Module, що в перекладі означає «Модуль мультіпроцессовой обробки». Зазвичай за замовчуванням в Apache використовується модуль MPM prefork.
Визначити, який саме Саме модуль Apache MPM використовується, можна за допомогою такої команди:
Або на системах, подібних Debian, де сервер називається apache2:
Розглянемо налаштування параметрів модуля Apache MPM prefork. виходячи з обсягу оперативної пам'яті на хості. Визначимо середній розмір пам'яті, займаний одним процесом Apache:
На системах, де сервер Apache представлений демоном apache2. замініть в рядку httpd на apache2.
Команда покаже загальний обсяг пам'яті, споживаної усіма процесами Apache і середній обсяг пам'яті на один процес. приклади:
У дистрибутивах, подібних Debian:
Краще цю команду виконати кілька разів, і бажано тоді, коли ваш сервер буде знаходитися під максимальним навантаженням, щоб визначити середні значення під навантаженням.
Тепер, знаючи середній обсяг пам'яті, який використовується сервером Apache, і знаючи обсяг фізичної пам'яті, можна обчислити значення MaxClients. яке задається у файлі конфігурації сервера Apache httpd.conf.
Припустимо, на вашому VPS або VDS сервері 1 Гб оперативної пам'яті, і ви хочете залишити 512 Мб для інших процесів, віддавши сервера Apache 512 Мб.
Попередня команда видала результати:
Тобто на один процес Apache в середньому йде 10 Мб пам'яті. Визначимо значення MaxClients:
MaxClients = Весь обсяг пам'яті для Apache / Обсяг пам'яті на один процес
MaxClients = 512 Мб / 10 МБ = 50.
Тепер ми знаємо найважливіше значення параметра модуля Apache MPM prefork. задає максимальне число дочірніх процесів таким, щоб не була "з'їдена" вся оперативна пам'ять, а тільки частина її (в нашому прикладі - половина, що дорівнює 512 Мб).
Внесемо дані в файл настройки модуля Apache MPM prefork, зазвичай розташовується по шляху /etc/httpd/conf/httpd.conf:
Короткий опис параметрів модуля Apache MPM Prefork:
StartServers - число дочірніх процесів, створюваних при запуску сервера.
MinSpareServers - мінімальне число невикористовуваних (запасних) дочірніх процесів сервера, які очікують потенційні запити.
MaxSpareServers - максимальне число запасних процесів, які очікують потенційні запити. Якщо це число буде перевищено, зайві процеси будуть вбиті.
MaxClients - найважливіший параметр модуля MPM prefork, встановлює верхню межу кількості одночасно активних процесів. Саме від нього залежить споживання пам'яті. Його значення перекриває значення попередніх параметрів.
ServerLimit зазвичай дорівнює MaxClients.
MaxRequestsPerChild - як часто сервер переробляє процеси, вбиваючи старі і починаючи (запускаючи) нові. Корисний при витоках пам'яті Apache і його бібліотек.
KeepAlive - забезпечує довгоживучі сесії HTTP, що дозволяють відправляти кілька запитів через один і той же з'єднання. Корисно включити, якщо веб-сторінка містить багато зображень.
Також є хороший скріптcheck_httpd_limits.pl. написаний на Perl, що дозволяє визначити, скільки пам'яті займають процеси сервера Apache. Скрипт видає попередження (або помилки), якщо встановлені в конфігурації Apache межі пам'яті перевищують розміри доступної пам'яті на сервері.