MaxClients в апаче. Как знать размер моего процесса?

Используемый эта оценка однажды и это имеет некоторые большие отчеты. AdminReportsKit

Не уверенный, если существует что-нибудь на Codeplex, Стоящем взгляда

9
задан 13 July 2011 в 02:41
2 ответа

Во-первых, определите 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 может расти со временем в зависимости от загрузки.

9
ответ дан 2 December 2019 в 22:29

Предсказание 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 в том же файле журнала - но это становится намного более сложным.

4
ответ дан 2 December 2019 в 22:29

Теги

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