2014-01-10 25 views
1

我的情况如下: 我们在15Gb ram实例rackspace上运行Magento Professional。当内存使用率达到90%时,终止apache进程

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

当内存几乎用完时,所有网站超时或变得非常慢。 当内存全部用完时,似乎这些进程中的一些被杀死以释放内存。

然后发生相同的程序。

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

+0

所有请求都会立即终止并且客户端会收到“服务器意外关闭连接”消息,这是不是相关的?你看过在Apache配置中调整'ServerLimit'吗? –

+0

更好地尝试重新启动到apache2,而不是简单地将它们全部杀死。将脚本放在它上面并经常像cron那样运行,就像5分钟一样检查mem的使用情况。 –

回答

3

尝试为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 

这当使用内存达到90%,并重新启动的Apache2会杀了你的Apache进程。如果你不想设置为cron,只要你想调节apache消耗的内存,只需运行这个脚本。

希望这可以帮助您的要求。

+0

计算记忆差异的好方法 –

相关问题