Убить процессы apache, когда использование памяти достигает 90%

Моя ситуация следующая: мы запускаем Magento Professional на экземпляре оперативной памяти 15 ГБ, в стойке.

При запуске htop мы могли видеть, что «apache2 -k start» продолжает порождать больше дочерних процессов, кто-то из них съедает ~900 МБ памяти.

Когда память почти израсходована, все сайты истекают по таймауту или становятся очень медленными. Когда вся память израсходована, кажется, что некоторые из этих процессов были убиты, чтобы освободить память.

Затем происходят те же процедуры.

Мой вопрос: можем ли мы настроить ubuntu / apache, чтобы убивать дочерние процессы и освобождать память, когда использование памяти достигает 85-90%?


person ALAN VO    schedule 10.01.2014    source источник
comment
Не имеет значения, что все запросы будут немедленно прекращены, а клиенты получат неожиданное сообщение о закрытии соединения сервером? Вы смотрели на настройку ServerLimit в конфигурации Apache?   -  person siva.k    schedule 10.01.2014
comment
Лучше попробовать перезапустить apache2 вместо того, чтобы просто убить их всех.. Поместите для него скрипт и запускайте его как cron часто, например, 5 минут, чтобы проверить использование памяти.   -  person Leo Prince    schedule 10.01.2014


Ответы (1)


Попробуйте установить этот скрипт на своем сервере как cron каждые 2 или 5 минут.

#!/bin/sh
TOTAL=`cat /proc/meminfo | grep MemTotal: | awk '{print $2}'`
USEDMEM=`cat /proc/meminfo | grep Active: | awk '{print $2}'`
LOG=/tmp/test.log
echo > $LOG
if [ "$USEDMEM" -gt 0 ]
 then
     USEDMEMPER=$[$USEDMEM * 100 / $TOTAL ]
     echo "Current used memory = $USEDMEMPER %"
     if [ "$USEDMEMPER" -gt 90 ]; then
         killall -9 apache2
         service apache2 restart
         echo "apache process killed " >> $LOG
     fi
fi
cat $LOG

Это убьет ваши процессы apache, когда используемая память достигнет 90%, и перезапустит apache2. Если вы не хотите устанавливать как cron, просто запустите этот скрипт в любое время, когда вы хотите отрегулировать память, потребляемую apache.

Надеюсь, это поможет вашим требованиям.

person Leo Prince    schedule 10.01.2014
comment
Хороший способ вычисления разницы в памяти - person Saif Asif; 10.01.2014