Настройка предварительного ветвления MaxClients ServerLimit Apache2

У меня есть машина с 128 ГБ Ram, который использует Apache2 в качестве веб-сервера (в этой машине нет никакого Сервера базы данных, Машина баз данных составляет 64 ГБ машина Ram, которая может обработать макс. соединения 2000 года). Я вижу с контрольным инструментом, что существует в данный момент приблизительно 44 занятых рабочих и 12 неактивных рабочих, что такое лучшие теоретические значения для моего модуля перед ветвлением?

я получил пустые страницы, иногда загружающие веб-сайты на высоких часах загрузки, и получил эту ошибку на моем апачском журнале ошибок:

[уведомление] дочерний отказ Сегментации сигнала выхода pid 13595 (11)

как может решить эту проблему также?

Моя конфигурация Модуля Перед ветвлением Apache2:

StartServers          3
MinSpareServers       3
MaxSpareServers       5
ServerLimit           3200
MaxClients            3100
MaxRequestsPerChild   0

Свободный-h на www Машине:

общее количество: 128 свободных G: 97 ГБ (с выполнением apache2) совместно использовали буферы 0b 1.9G кэш 23G

Ram используется Apache2 и другими Программами:

Private  +   Shared  =  RAM used    Program

 96.0 KiB +  61.0 KiB = 157.0 KiB   sh
176.0 KiB +  26.0 KiB = 202.0 KiB   atd
176.0 KiB +  35.5 KiB = 211.5 KiB   acpid
208.0 KiB +  19.5 KiB = 227.5 KiB   mdadm
204.0 KiB +  30.0 KiB = 234.0 KiB   init
248.0 KiB +  62.0 KiB = 310.0 KiB   sendmail
376.0 KiB +  36.0 KiB = 412.0 KiB   dbus-daemon
388.0 KiB + 285.5 KiB = 673.5 KiB   cron (2)
820.0 KiB +  42.0 KiB = 862.0 KiB   gam_server
920.0 KiB + 108.0 KiB =   1.0 MiB   ntpd
968.0 KiB + 243.0 KiB =   1.2 MiB   getty (6)
  1.3 MiB + 351.5 KiB =   1.6 MiB   udevd (3)
  1.5 MiB + 343.0 KiB =   1.8 MiB   sendmail-msp
  2.0 MiB + 910.0 KiB =   2.9 MiB   plugin-localresources2
  3.4 MiB +  50.0 KiB =   3.4 MiB   rsyslogd
  3.6 MiB +  68.5 KiB =   3.7 MiB   bash
  1.9 MiB +   2.1 MiB =   4.0 MiB   sendmail-mta (4)
  3.8 MiB + 556.0 KiB =   4.3 MiB   sshd (2)
  3.7 MiB +   1.2 MiB =   4.8 MiB   plugin-apache2
  5.1 MiB +   1.2 MiB =   6.3 MiB   agent-service
  7.0 MiB + 654.0 KiB =   7.6 MiB   fail2ban-server
  9.6 MiB +   2.6 MiB =  12.2 MiB   proftpd (8)
 59.2 MiB +  70.0 KiB =  59.3 MiB   miniserv.pl
 96.8 MiB +   3.6 MiB = 100.4 MiB   php5-cgi (2)
196.4 MiB +  35.9 MiB = 232.3 MiB   apache2 (40)
---------------------------------
                     tot 450.0 MiB
22
задан 28 November 2014 в 01:17
1 ответ

Настройки предварительной пробки Apache, согласно рекомендациям по настройке производительности apache

цитата:

The single biggest hardware issue affecting webserver performance is RAM.
A webserver should never ever have to swap, as swapping increases the latency
of each request beyond a point that users consider "fast enough". 
This causes users to hit stop and reload, further increasing the load.
You can, and should, control the MaxClients setting so that your server does
not spawn so many children it starts swapping. This procedure for doing this
is simple: determine the size of your average Apache process, by looking at
your process list via a tool such as top, and divide this into your total 
available memory, leaving some room for other processes.

вы должны настроить так, основываясь на вашем вводе в:

  • Общая память: 128 Гб
  • -10% памяти для всего, кроме apache: 115 Гб
  • Теперь нам нужно выяснить, сколько используется одного apache-процесса.

Для вычисления можно использовать следующий скрипт :

pgrep apache2 | xargs -n1 -I{} cat /proc/{}/smaps | \
  awk '{if ($0 ~ /stack/) {pids+=1} else if ($0 ~/^Shared_/) 
    {shared+=$2} else if ($0 ~ /^Pss:/) {priv+=$2}} END {
      printf "%.2f MB\n",(priv+shared/(pids*pids))/1024}'

Это лучшая оценка того, сколько памяти использует один apache-процесс при попытке пропорционально разделить общее использование на количество активных apache-процессов и добавить его поверх Pss (пропорциональный размер набора)

Наконец, вы делите 115 Гб с этой цифрой и получаете MaxClients/ServerLimit. Отсюда вы можете относительно рассчитать другие фигуры, такие как

  • StartServers 30% от MaxClients
  • MinSpareServers 5% от MaxClients
  • MaxSpareServers 10%. MaxClients
  • ServerLimit == MaxClients
  • MaxConnectionsPerChild 10000 (как консервативная альтернатива для решения возможной проблемы с приложениями с утечкой памяти)
63
ответ дан 28 November 2019 в 20:21

Теги

Похожие вопросы