как узнать сколько памяти потребляет один поток apache
Рассчитываю какое значение устанавливать в MaxClients. Вот интересно как узнать сколько памяти сжирает один поток апача. Да и интересно это количество в целях оптимизации ресурсов.
1 ответов
по идее:
MaxClients ≈ (RAM - размер_всего_всего)/(размер_апача)
Берем Смотрим сколько памяти ест апач, фиксируем,
останавливаем апач, смотрим количетво памяти overall, фиксируем,
запускаем апач, показываем результат расчетов.
Скрипт расчета примерного количества MaxClients.
#!/bin/bash
if [ -e /etc/debian_version ]; then
APACHE="apache2"
elif [ -e /etc/redhat-release ]; then
APACHE="httpd"
fi
RSS=`ps -aylC $APACHE |grep "$APACHE" |awk '{print $8'} |sort -n |tail -n 1`
RSS=`expr $RSS / 1024`
echo "Stopping $APACHE to calculate free memory"
/etc/init.d/$APACHE stop &amp> /dev/null
MEM=`free -m |head -n 2 |tail -n 1 |awk '{free=($4); print free}'`
echo "Starting $APACHE again"
/etc/init.d/$APACHE start &> /dev/null
echo "MaxClients should be around" `expr $MEM / $RSS`
update:
Возможно есть утилита apachetop, если нет
Можно попросту вывести все потоки апача
# debian
ps ax | grep [h]ttpd | grep -v grep
# redhat
ps ax | grep apach[e] | grep -v grep
Что бы подсчитать сумму памяти потоков
# debian
ps auxf | grep [h]ttpd | awk '{sum=sum+$6}; END {print sum/1024}'