От http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
Самая большая проблема с оборудованием, влияющая на производительность веб-сервера, - это оперативная память. Веб-сервер никогда не должен менять местами, так как замена увеличивает задержку каждого запроса за пределы точки, которую пользователи считают «достаточно быстрой». Это заставляет пользователей останавливаться и перезагружаться, что еще больше увеличивает нагрузку. Вы можете и должны контролировать настройку MaxClients, чтобы ваш сервер не порождал столько дочерних элементов, он начал обмениваться. Эта процедура для этого проста: определите размер вашего среднего процесса Apache, просматривая список процессов с помощью такого инструмента, как top, и разделите его на общую доступную память, оставляя место для других процессов.
Основная проблема заключается в том, что я не могу понять, как узнать размер, потому что, ну у меня размер httpd не больше 3888
Но если нам нужно определить число для MaxClients, и у меня есть 4 ГБ ОЗУ, то я получу: 972, поэтому я должен использовать как 900 в MaxClients?
источник
Ответы:
Сначала определите PID одного из ваших процессов Apache.
Тогда вы можете сделать что-то вроде этого:
cat /proc/PIDHERE/status | grep VmRSS
Это даст (текущий) резидентный набор-размер этого конкретного процесса, аналогично:
VmRSS: 304456 kB
Это значение, как это звучит, это размер резидентного процесса в оперативной памяти.
Затем нормализуйте свою единицу измерения (
4GB * 1024 * 1024 = 4,194,304 KB
). Делить:4194304 KB / 304456 KB = 13.77 processes
Учтите, что в вашей системе, возможно, запущены другие процессы, которые также будут потреблять память, и в идеале вы хотите свести к минимуму перестановку, поэтому вряд ли вы захотите настроить 13 Apache MaxClients (используя мои номера), вам нужно немного меньше (на ваше усмотрение) ).
Это грубая оценка; размер ваших процессов Apache может со временем увеличиваться в зависимости от нагрузки.
источник
Прогнозирование maxClients из тестовых сценариев является отправной точкой, но для правильного решения проблемы необходимо начать измерять поведение своего приложения с реальным трафиком.
Предполагая, что ваш apache работает на pre-fork ....
Настройте задание cron для подсчета количества процессов httpd и вывода «free». Обратите внимание, что если ваш веб-сервер обслуживает какой-либо контент из локальных файлов (и во многих случаях, даже если это не так), объем памяти, доступной для кэша / буферов, будет сильно влиять на производительность. то есть, если вы дойдете до точки обмена, ваша веб-производительность, вероятно, ужасна!
Когда у вас есть какие-либо данные, нанесите их на график и выполните регрессию наименьших квадратов - экстраполируйте, чтобы найти число клиентов, при которых вы достигнете целевого предела использования памяти httpd. Отправной точкой для целевого объекта памяти будет меньше 80% физической памяти / 80% размера содержимого.
(обратите внимание, если для MinSpareServers установлено очень высокое значение, результаты могут быть неточными)
В идеальном мире вы также измеряли бы время отклика URL в том же файле журнала - но это становится намного сложнее.
источник