首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

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

2012-11-15 
一行命令实现监控ROR服务进程的内存占用并自动重启自己玩的服务器只有1G内存,服务了4个ROR应用和4个PHP应

一行命令实现监控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%

?

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

热点排行