Убить процессы Apache, когда использование памяти достигает 90%
Моя ситуация следующая: мы запускаем Magento Professional на 15 Гб оперативной памяти, в стойке.
При запуске htop мы могли видеть, что "apache2 -k start" продолжает порождать больше дочерних процессов, кто-то из них потребляет ~900 МБ памяти.
Когда память почти полностью израсходована, время ожидания для всех сайтов слишком велико. Когда память полностью израсходована, кажется, что некоторые из этих процессов были убиты, чтобы освободить память.
Затем происходят те же процедуры.
Мой вопрос: можем ли мы настроить Ubuntu / Apache для уничтожения дочерних процессов и освобождения памяти, когда использование памяти достигает 85-90%?
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.
Надежды это поможет вашим требованиям.