我的情况如下: 我们在15Gb ram实例rackspace上运行Magento Professional。
运行htop时,我们可以看到'apache2 -k start'不断产生更多的子进程,有人吃了〜900Mb的内存。
当内存几乎耗尽时,所有网站都会超时或变得非常慢。 当内存全部耗尽时,似乎其中一些进程被释放为空闲内存。
然后会发生相同的程序。
我的问题是,当内存使用率达到85-90%时,我们可以设置ubuntu / apache来终止子进程并释放内存吗?
答案 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消耗的内存时随时运行此脚本。
希望这有助于满足您的要求。