как узнать сколько памяти потребляет один поток 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 &ampamp> /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}'