centos 内存问题处理
1.查询内存使用量:
free -m
2.查询内存占用排行(前10)
ps aux | head -1; ps aux | sort -k4nr | head -10
3.设置定时清理脚本,dropcache.sh
#!/bin/bash
used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`
echo "===========================" >> /opt/dropcache/logs.txt
date >> /opt/dropcache/logs.txt
echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /opt/dropcache/logs.txt
# drop caches when the free memory less than 10G
if [ $free -le 10000 ] ; then
#sync && echo 1 > /proc/sys/vm/drop_caches
#sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches
echo "OK" >> /opt/dropcache/logs.txt
else
echo "Not required" >> /opt/dropcache/logs.txt
fi
shell 主要是列出当前使用了多少内存,如果小于10G,则将内存清理掉,并将日志写入 logs.txt 的文件中。
如果超过10G也写入日志文件,但是会提示: Not required 表示无需清理。注意1.要修改文件的执行权限,2是要注意 Windows和Unix的文件编码格式的转换,不然会报syntax error near unexpected token `fi’的错误,
4.将脚本添加到crond任务,定时执行。
echo "*/30 * * * * sh /opt/dropcache/dropcache.sh" >> /etc/crondta