free 命令 产看内存占用一览:
free 参数:
今天部署项目的时候,发现pm2命令卡顿不能正确执行,一开始以为是pm2版本的问题,后面升级pm2到最新版本也没有解决问题。既然和pm2本身没有关系,那么就从其它地方检查,检查端口、检查内存、检查防火墙,折腾了半天最后解决了问题,(不在此扩展这个问题)。在检查内存占用的时候,发现buff/cache 占有比例过大,free内存直接剩下仅仅几十兆。
先手动释放一拨儿内存,执行命令:
echo 1 > /proc/sys/vm/drop_cachesecho 2 > /proc/sys/vm/drop_cachesecho 3 > /proc/sys/vm/drop_caches
执行完成后,立竿见影,内存一下子释放了出来,但是当再次执行 free 命令后,发现缓存一直在不停的写入:
因此,需要设置定时释放:
1、创建可执行的 .sh 文件:根据个人的实际情况选择存放目录,我的这个服务器下 .sh 大部分都在 /bin/ 目录下 ,因此在该目录下创建 cleanCache.sh 文件
2、编辑cleanCache.sh 文件:
echo "开始"sync;sync;sync #写入硬盘,防止数据丢失sleep 10 #延迟10秒echo 1 > /proc/sys/vm/drop_cachesecho 2 > /proc/sys/vm/drop_cachesecho 3 > /proc/sys/vm/drop_cachesecho "结束"
3、chmod 777 + 文件或目录,(示例:chmod 777 /test 运行命令后,test文件夹(目录)的权限就被修改为 777 可读可写可执行) 赋予cleanCache 文件可执行权限:
chmod 777 cleanCache.sh
4、crontab -e 打开并编辑定时执行配置文件,在文件后面追加执行命令 。Linux crontab是用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。注意路径:
crontab -e
文件路径前面有五个星号,为了方便观察 */1 代表每一分钟执行一次,每个*号代表的意义可看这篇文章 https://www.cnblogs.com/qi-yuan-008/p/13587233.html。
* * * * * shell_command# 第一个*号表示分钟:范围在0-59# 第二个*号表示小时:0-23# 第三个*号表示一个月的第几天:1-31# 第四个*号表示月份:1-12;或者英文缩写,例如jan等# 第五个*号表示星期:0-6,(星期天=0或者7);或者英文缩写,例如sun,mon,fri等
编辑完成后退出,查看:
修改完成后为了保证文件执行可再次赋权一下:chmod 777 cleanCache.sh ,一切完成后,可多次执行 free 观察变化,当分钟发生变化的时候 ,buff/cache 出现下降:
上面是为了方便观察定时设置为每分钟执行一次,实际可根据自己需要延长定时时间。