====== Оптимизация настроек 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.