[2]服务内存使用量监控

1、服务内存使用量监控脚本

内存监控脚本,监控服务如YourServer内存使用是否过量,当内存使用超过阈值,重启服务。
新建./mointer_mem_kill.sh,并赋予可执行权限web

#!/bin/bash
interval=120  #设置采集间隔120s
mem_threshold=27648  # 大于27G内存时kill待进程,进程经过supervisor自动重启
condition=true
while $condition
do
    pid=$(ps -ef |grep YourServer |grep -v "grep"| awk '{print $2}')  #获取进程pid
    mem_total=$(cat /proc/meminfo |grep -w MemTotal | awk '{print $2}')
    mem_free=$(cat /proc/meminfo |grep -w MemFree | awk '{print $2}')
    mem_buffers=$(cat /proc/meminfo |grep -w Buffers | awk '{print $2}')
    mem_cached=$(cat /proc/meminfo |grep -w Cached | awk '{print $2}')
    mem_used=$[($mem_total-$mem_free-$mem_buffers-$mem_cached)/1024] ## 计算使用内存
    echo $mem_used
    if [ $mem_used -gt $mem_threshold ];
    then
        echo $(date +"%y-%m-%d %H:%M:%S") >> log.txt ## 记录内存超阈值异常至log文件
        echo "内存超27G" >> log.txt
        kill -9 $pid
    fi
    sleep $interval
done

2、内存监控脚本使用

2.1 如何启动内存监控脚本

nohup ./data_center_mem_kill.sh  > /dev/null 2> /dev/null &

2.2 如何杀掉监控程序.

方法1

ps auxf|grep 'mointer_mem_kill.sh'|grep -v grep|awk '{print $2}'|xargs kill -9

方法2

ps -ef |grep mointer_mem_kill.sh |grep -v "grep"
kill  -9 pid