Все эти серверы, идентичные в HW & SW. У них есть тот же набор СЕРВИСОВ (в автоматическом режиме)
Попытайтесь отключить сервис IIS и освободить папку временного файла / - когда Ваш сервер отстанет.
Я уверен, что эти 3 сервера являются сбалансированной загрузкой, и другие 2 ударят - совместно использовать загрузку.
Я дал Вам ответ на это в комментариях о Сервере, не отвечающем на SSH и HTTP, но работы ping, но по-видимому Вы не верите мне. Действительно, это верно!
Необходимо измерить MaxClients
/ ServerLimit
к Вашей системе. "5-10 настроек для Серверов Минуты/Макса", которые Вы упоминаете, в основном не важны — это - просто количество дополнительных серверов, бродящих вокруг не выполнение чего-либо, что сохранит Apache.
Для установки MaxClients соответственно, посмотрите на типичную высшую точку для Вашего httpd
(или apache2
) процессы, и затем делят Вашу доступную память на это. Лучше всего к выпадающему немного для предоставления остальной части системной комнаты для дыхания. Так как у Вас есть 4 ГБ RAM и процессы 185 МБ, который означает Ваш ServerLimit
значение должно быть 21 самое большее — вероятно, 20 или 19.
Теперь, может случиться так, что 190 МБ нетипичны. Можно установить ServerLimit выше, на основе другой оценки типичного использования, но затем Вы в основном держите пари, что у Вас никогда не будет скачка. Если это действительно произойдет, то Ваша система будет вне памяти.
Если можно найти способ ограничить использование памяти на рабочего, это собирается быть победой. Я держу пари, что это - случай PHP, Съел Мою RAM. Можно ли кодировать приложение для проживания в более низком memory_limit
? Если Вы не можете сделать этого, Вам нужна другая модель, под которой можно выполнить Ваш PHP. Если Вы не можете сделать этого, необходимо купить больше RAM.
Предварительное ветвление Apache MPM самоуправляет серверами. Это будет всегда запускаться с StartServers
демоны, и никогда не будут выполнять меньше, чем MinSpareServers
после того как это начинается. Это также в конечном счете удалится/уничтожит от серверов сверх MaxSpareServers
если они неактивны достаточно долго (я не вспоминаю то, что "Достаточно долго" находится в этом контексте, ни если/как он может быть изменен).
ServerLimit
определяет максимальный номер апачских демонов, которые могут работать в любой момент времени - Поэтому в Вашей ситуации у Вас могут быть сотни апачских процессов сна (они были порождены для обслуживания лавинной рассылки запросов и не были неактивны достаточно долго, чтобы быть уничтоженными родительским процессом все же).
Лично я думаю, что 1250 является довольно высоким значением для ServerLimit
/MaxClients
- 250 может быть более разумное число (хотя это может привести к случайным 503/серверам Занятым ошибкам, если Вы получаете крупную лавинную рассылку запросов: если это становится хронической проблемой, можно увеличить число или добавить больше серверов для обработки загрузки).
Связь этого вопроса предыдущему одно Ре: катастрофический отказ из памяти, определенно следуйте за руководством от Руководства Apache по этому параметру:
Most important is that MaxClients be big enough to handle as many simultaneous
requests as you expect to receive, but small enough to assure that there is enough
physical RAM for all processes.
… и моя персональная аксиома: It's better to give a client a 503 page than knock the server down
. :)
Выключите Сообщения проверки активности и установите MaxClients на 150. Наиболее вероятная причина у Вас есть 260 процессов, просто находящихся, состоит в том, потому что Apache покорно содержит соединения браузера, открытые, потому что KeepAlive на установлен в Вас апачский файл конфигурации.
Вычислите, сколько серверов вы можете запустить в пределах ограничений оперативной памяти вашей системы, выполнив эту команду:
$ ps -ylC apache2 | awk '{x += $8;y += 1} END {print "Apache Memory Usage (MB): "x/1024; print "Average Process Size (MB): "x/((y-1)*1024)}'
Если получится вывод типа:
Apache Memory Usage (MB): 1608.76
Average Process Size (MB): 55.4745
Теперь остановите apache и узнайте, сколько оперативной памяти у вас есть без него, используя free
:
total used free shared buffers cached
Mem: 7629384 7415780 213604 0 333428 5341884
-/+ buffers/cache: 1740468 5888916
Swap: 7629380 7968 7621412
(выше - в килобайтах). free -m
покажет вам мегабайты.)
Linux заполнит доступную память буферами и кэшем, так что добавление free+buffers+cache (213604+333428+5341884) даст 5888916 Кбайт доступной памяти.
588916K доступно / 55474K на один apache-процесс = 106 серверов. Но установите его ниже, чтобы оставить немного места для дыхания.
. По моему опыту стоит попытаться настроить KeepAliveTimeout
после правильной настройки других параметров относительно количества процессов. Я говорю настройка, что означает, что вы должны слегка изменить параметр и измерить реакцию сервера. Среди наших сайтов один лучше всего работает с KeepAliveTimeout=3
, а другой с KeepAliveTimeout=1
. Ни один из них не устраивает, если KeepAliveTimeout=3
выключен. Эта дополнительная настройка избавляет вас от необходимости покупать/распределять лишнюю оперативную память слишком рано.
Настройка проста, так как изменение вступает в силу сразу после плавного перезапуска:
sudo apache2ctl -k graful
(Я возрождаю старый поток, потому что Google всё ещё считает это актуальным... ;) )