====== Оптимизация настроек mpm_prefork ======
При настройке необходимо учитывать следующие факторы:
- Количество ОЗУ на сервере
- Сколько памяти в процентах мы готовы пожертвовать Apache
- Сколько кушает в среднем один httpd
- Сколько мы можем запустить параллельно httpd чтобы не превысить пункт (2)
Формула расчёта максимального количества пользователей Apache выглядит примерно так: \\
%%(“вся память”-“25%”)/(“вся память использованная для всех процессов httpd”/“количество httpd процессов”)%%
===== Скрипт для расчёта оптимальных значений =====
* Создание файла скрипта
cat > apache_prefork.sh <
StartServers\t \$StartServers
MinSpareServers\t \$MinSpareServers
MaxSpareServers\t \$MaxSpareServers
ServerLimit\t \$ServerLimit
MaxClients\t \$MaxClients
MaxRequestsPerChild\t \$MaxRequestsPerChild
"
EOF
Или
nano apache_prefork.sh
#!/bin/bash
TotalMem=$(free -m | grep Mem | awk '{ print $2 }')
HttpMem=$(ps aux | egrep 'httpd|apache2' | grep -v grep | awk '{sum +=$6}; END {print sum}')
HttpCount=$(ps aux | egrep 'httpd|apache2' | grep -v grep | wc -l)
Http1tread=$(echo "$HttpMem/$HttpCount/1024" | bc)
HttpMaxTreads=$(echo "$TotalMem/100*75/$Http1tread" | bc)
StartServers=$(echo "$HttpMaxTreads/5" | bc)
MinSpareServers=$StartServers
MaxSpareServers=$(echo "$MinSpareServers*2" | bc)
ServerLimit=$HttpMaxTreads
MaxClients=$HttpMaxTreads
MaxRequestsPerChild=$(echo "$MaxClients*$MinSpareServers" | bc)
echo -e "
StartServers\t $StartServers
MinSpareServers\t $MinSpareServers
MaxSpareServers\t $MaxSpareServers
ServerLimit\t $ServerLimit
MaxClients\t $MaxClients
MaxRequestsPerChild\t $MaxRequestsPerChild
"
* Выполнение скрипта
bash ./apache_prefork.sh
На выходе получаем результат:
StartServers 23
MinSpareServers 23
MaxSpareServers 46
ServerLimit 116
MaxClients 116
MaxRequestsPerChild 2668
Копируем и заменяем текущие настройки в конфигурационном файле apache.