最近服务器老是运行缓慢
free -m 查看,发现内存跑满了。
再 top,然后按下shift+m,也就是按内存占用百分比排序,发现排在第一的进程,才占用0.9%。
那是什么占用的呢?
百度了一下,据说是centos为了提高效率,把部分使用过的文件缓存到了内存里。
如果是这样的话,我又不需要这样的文件性能,那就可以释放。如下两个命令就可以:
#sync
#echo 3 > /proc/sys/vm/drop_caches
内存释放后,就占用很低了
可以定时执行吗?百度了一个脚本过来。
# 脚本开始 # ########################## # Freemem by vpshz.com ########################## #!/bin/sh Time1=`date +%Y%m%d` Time2=`date +%k:%M:%S` mkdir /backup/freemem/ cd /backup/freemem/ # #echo "">memstat_$Time1.log # echo $Time1--$Time2 >>memstat_$Time1.log echo "------------------" >>memstat_$Time1.log echo "The mem stat is :" >>memstat_$Time1.log echo "" >>memstat_$Time1.log free >>memstat_$Time1.log echo "" >>memstat_$Time1.log #sync echo "....Freeing......" >>memstat_$Time1.log echo "">>memstat_$Time1.log # echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches echo "---> OK ! " >>memstat_$Time1.log echo "">>memstat_$Time1.log free >>memstat_$Time1.log echo "=========================================================================">> memstat_$Time1.log echo "">>memstat_$Time1.log echo "">>memstat_$Time1.log cd - cat /backup/freemem/memstat_$Time1.log # 脚本结束
另外一个脚本如下:
# vim /backup/freemem/freemem.sh #!/bin/bash used=`free -m | awk 'NR==2' | awk '{print $3}'` free=`free -m | awk 'NR==2' | awk '{print $4}'` echo "===========================" >> /backup/freemem/mem.log date >> /backup/freemem/mem.log echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /backup/freemem/mem.log if [ $free -le 200 ] ; 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" >> /backup/freemem/mem.log else echo "Not required" >> /backup/freemem/mem.log赋予脚本执行权限 chmod 777 /backup/freemem/freemem.sh
评论