当内存使用率达到90%时杀死apache进程

时间:2014-01-10 01:17:42

标签: apache ubuntu kill-process rackspace

我的情况如下: 我们在15Gb ram实例rackspace上运行Magento Professional。

运行htop时,我们可以看到'apache2 -k start'不断产生更多的子进程,有人吃了〜900Mb的内存。

当内存几乎耗尽时,所有网站都会超时或变得非常慢。 当内存全部耗尽时,似乎其中一些进程被释放为空闲内存。

然后会发生相同的程序。

我的问题是,当内存使用率达到85-90%时,我们可以设置ubuntu / apache来终止子进程并释放内存吗?

1 个答案:

答案 0 :(得分:3)

尝试每2或5分钟在服务器中将此脚本设置为cron

#!/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

当使用的内存达到90%并重新启动apache2时,这将终止您的apache进程。如果您不想设置为cron,只需在您希望调节apache消耗的内存时随时运行此脚本。

希望这有助于满足您的要求。