内存监控脚本,监控服务如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
nohup ./data_center_mem_kill.sh > /dev/null 2> /dev/null &
ps auxf|grep 'mointer_mem_kill.sh'|grep -v grep|awk '{print $2}'|xargs kill -9
ps -ef |grep mointer_mem_kill.sh |grep -v "grep" kill -9 pid