Оптимизация настроек mpm_prefork

При настройке необходимо учитывать следующие факторы:

  1. Количество ОЗУ на сервере
  2. Сколько памяти в процентах мы готовы пожертвовать Apache
  3. Сколько кушает в среднем один httpd
  4. Сколько мы можем запустить параллельно httpd чтобы не превысить пункт (2)

Формула расчёта максимального количества пользователей Apache выглядит примерно так:
(“вся память”-“25%”)/(“вся память использованная для всех процессов httpd”/“количество httpd процессов”)

  • Создание файла скрипта
cat > apache_prefork.sh <<EOF
#!/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 "
<IfModule prefork.c>
StartServers\t    \$StartServers
MinSpareServers\t    \$MinSpareServers
MaxSpareServers\t    \$MaxSpareServers
ServerLimit\t    \$ServerLimit
MaxClients\t    \$MaxClients
MaxRequestsPerChild\t    \$MaxRequestsPerChild
</IfModule>
"
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 "
<IfModule prefork.c>
StartServers\t    $StartServers
MinSpareServers\t    $MinSpareServers
MaxSpareServers\t    $MaxSpareServers
ServerLimit\t    $ServerLimit
MaxClients\t    $MaxClients
MaxRequestsPerChild\t    $MaxRequestsPerChild
</IfModule>
"
  • Выполнение скрипта
bash ./apache_prefork.sh 

На выходе получаем результат:

<IfModule prefork.c>
StartServers    23
MinSpareServers    23
MaxSpareServers    46
ServerLimit    116
MaxClients    116
MaxRequestsPerChild    2668
</IfModule>

Копируем и заменяем текущие настройки в конфигурационном файле apache.

  • optimizacija_nastroek_mpm_prefork.txt
  • Последние изменения: 2015/09/24 00:00
  • (внешнее изменение)