У меня есть машина с 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
Настройки предварительной пробки 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.
вы должны настроить так, основываясь на вашем вводе в:
Для вычисления можно использовать следующий скрипт :
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% от MaxClientsMinSpareServers
5% от MaxClientsMaxSpareServers
10%. MaxClientsServerLimit
== MaxClientsMaxConnectionsPerChild
10000 (как консервативная альтернатива для решения возможной проблемы с приложениями с утечкой памяти)