Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

optimizacija_nastroek_mpm_prefork [2015/09/24 00:00] (текущий)
Строка 1: Строка 1:
 +====== Оптимизация настроек mpm_prefork ======
  
 +При настройке необходимо учитывать следующие факторы:​
 +  - Количество ОЗУ на сервере
 +  - Сколько памяти в процентах мы готовы пожертвовать Apache
 +  - Сколько кушает в среднем один httpd
 +  - Сколько мы можем запустить параллельно httpd чтобы не превысить пункт (2)
 +
 +Формула расчёта максимального количества пользователей Apache выглядит примерно так: \\
 +<color red>​%%(“вся память”-“25%”)/​(“вся память использованная для всех процессов httpd”/​“количество httpd процессов”)%%</​color>​
 +
 +===== Скрипт для расчёта оптимальных значений =====
 +
 +  * Создание файла скрипта
 +<code bash>
 +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
 +</​code>​
 +
 +Или
 +<code bash>
 +nano apache_prefork.sh
 +</​code>​
 +<code apache>
 +#!/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>​
 +"
 +</​code>​
 +
 +
 +  * Выполнение скрипта
 +<code bash>
 +bash ./​apache_prefork.sh ​
 +</​code>​
 +
 +На выходе получаем результат:​
 +<​code>​
 +
 +<​IfModule prefork.c>​
 +StartServers ​   23
 +MinSpareServers ​   23
 +MaxSpareServers ​   46
 +ServerLimit ​   116
 +MaxClients ​   116
 +MaxRequestsPerChild ​   2668
 +</​IfModule>​
 +
 +</​code>​
 +
 +Копируем и заменяем текущие настройки в конфигурационном файле apache.
  • optimizacija_nastroek_mpm_prefork.txt
  • Последние изменения: 2015/09/24 00:00
  • (внешнее изменение)