一行命令实现监控ROR服务进程的内存占用并自动重启

自己玩的服务器只有1G内存,服务了4个ROR应用和4个PHP应用,最近老有搜索引擎和不知哪里的程序来拖整个站点,再加上ROR应用未知的内存泄露问题,经常导致服务器内存严重不足,进而造成服务响应过慢,无法登录服务器等后果,痛定之后,写了个1行代码的SHELL脚本来定时监控应用的内存占用情况,如果内存占用超过系统内存的60%,就自动重新启动应用,以释放内存,经过一段时间的使用,效果还可以。

 

以监控服务器上的nfodb应用为例,此应用目录在/www下,以thin -C config/thin.yml start启动:

 

cd /www && /bin/ps -e -o pcpu,pmem,args|grep nfodb|grep -v grep|awk 'BEGIN { t=strftime("%Y-%m-%d %H:%M");cpu=0;mem=0;} { cpu += $1; mem+=$2} END {printf("%s\tCPU=%2.1f%%\tMEM=%2.1f%%\n", t,cpu,mem);if (mem > 60) {print t"\tMEMORY USAGE > 60%, restarting daemon...";system("thin -C config/thin.yml stop"); system("thin -C config/thin.yml start")}}' && cd ->/dev/null

 

在系统crontab里面加上每5分钟调用一次上述代码,则就达到自动监控、记录、重启服务的目的了。

 

执行代码输出为当前时间CPU与内存占用的百分比。如下:

 

2009-02-08 13:25        CPU=0.5%        MEM=40.5%
2009-02-08 13:30        CPU=0.5%        MEM=40.5%
2009-02-08 13:35        CPU=0.5%        MEM=40.5%

 

代码稍加改造,即可监控其它进程或做成一个通用的进程监控程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值