Используемый эта оценка однажды и это имеет некоторые большие отчеты. AdminReportsKit
Не уверенный, если существует что-нибудь на Codeplex, Стоящем взгляда
Во-первых, определите PID одного из Ваших процессов Apache.
Затем можно сделать что-то вроде этого:
cat /proc/PIDHERE/status | grep VmRSS
Это приведет к (текущему) размеру резидентного набора того конкретного процесса, подобного:
VmRSS: 304456 kB
Это значение - поскольку это звучит, это - размер резидентного объекта процесса в RAM.
Затем нормализуйте свою единицу измерения (4GB * 1024 * 1024 = 4,194,304 KB
). Разделитесь:
4194304 KB / 304456 KB = 13.77 processes
Полагайте, что у Вас, вероятно, есть другие процессы, работающие на Вашей системе, которая использует память также, и идеально Вы хотите минимизировать свопинг, поэтому Вы вряд ли хотели бы 13 настроенных Apache MaxClients (использование моих чисел), Вы хотите некоторую сумму меньше (по Вашему усмотрению).
Это - примерная оценка; размер Ваших процессов Apache может расти со временем в зависимости от загрузки.
Предсказание maxClients из сценариев тестирования является начальной точкой - но решить проблему правильно необходимо начать иметь размеры, как приложение ведет себя с реальным трафиком.
Принятие Вашего апача выполняет предварительное ветвление....
Настройте задание крона для подсчета количества процессов httpd и вывода 'свободных'. Обратите внимание, что, если Ваш веб-сервер подает какое-либо содержание из локальных файлов (и в большом количестве случаев, даже когда это не) объем памяти, доступный для кэша/буферов, окажет большое влияние на производительность. т.е. если Вы переходите к сути дела свопинга, Ваша веб-производительность, вероятно, ужасна!
После того как Вы имеете некоторые данные, выводите их на печать на диаграмме и делаете регрессия наименьших квадратов на них - экстраполирует для нахождения числа клиентов, в которых Вы достигаете своего целевого предела для httpd использования памяти. Начальная точка для цели памяти была бы меньшими из 80% физической памяти / 80% размера содержания.
(отметьте, установили ли Вам MinSpareServers на очень высокое значение, результаты не могут быть точными),
#!/bin/bash
LOGFILE='/var/log/httpd/memusage'
PIDS = `ps -ef | grep httpd | grep -v grep | wc -l`
MEM = `free | grep 'buffers/cache'`
DAY = `date '%Y-%m-%d %H:%M:%S'`
echo ${DAY} ${PIDS} ${MEM} >>LOGFILE
В идеальном мире Вы также измерили бы время отклика URL в том же файле журнала - но это становится намного более сложным.