Убить процессы 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.

Надежды это поможет вашим требованиям.

Другие вопросы по тегам