我是靠谱客的博主 现实洋葱,最近开发中收集的这篇文章主要介绍记一次解决缓存不释放导致内存耗光问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 前言

通过脚本备份数据和系统,笔者遇到两项缓存过高不释放而导致内存使用过高问题,Zabbix截图如下,

wKiom1msyt7CyOP-AAChUchOJ2s359.png

- 第一次是由每小时往挂载的Window共享里面存放备份文件引起

- 第二次是由每周备份系统过度地频繁读写文件系统引起缓存不释放引起

2 挂载Window共享备份引发的缓存问题

2.1 问题描述

挂载Window的共享成为Linux服务器的备份目录,发现备份后缓存过高,挂载范例如下,

mount -t cifs -o username=user1%pwd1 //backupSer/backup$ /backup/

2.2 排查方法

1)使用free命令可以发现cached占用情况,

free -m

显示如下:

             total       used       free     shared    buffers     cached
Mem:          7872       7732        139          0        190       6312
-/+ buffers/cache:       1229       6642
Swap:         4047          0       4047

注:留意cached项非常高

2)进一步的,使用slabtop可以发现cifs模块占用了大量的缓存(忘记截图保留了……O(∩_∩)O哈哈~,见谅哈!)

slabtop

注:查看SIZE和NAME项

2.3 排查故障

尝试手动卸载发现缓存被释放

umount /backup

2.4 解决方案

改用autofs去按需要自动挂载和卸载(非本文核心内容,这里不详述,自己研究)


3 频繁读写文件系统引发的Cache问题

3.1 问题描述

用tar命令备份系统,由于频繁读写文件系统,物理内存占用不被释放

3.2 排查方法

1)查看缓存占用情况

free -m

显示如下:

             total       used       free     shared    buffers     cached
Mem:          7872       7732        139          0        190       6312
-/+ buffers/cache:       1229       6642
Swap:         4047          0       4047

2)进一步的,使用slabtop没有发现占用了大量缓存的模块

3.3 补充知识

free -m打印的结果,

             total       used       free     shared    buffers     cached
Mem:          7872       7732        139          0        190       6312
-/+ buffers/cache:       1229       6642
Swap:         4047          0       4047

如上所示,

cached项反映的是pagecache的使用情况

buffers项反映的是inode和dentry等文件系统metadata的使用情况


网络上有3种释放方法:

#释放pagecache
echo 1 > /proc/sys/vm/drop_caches  

#释放inode和dentry等metadata  
echo 2 > /proc/sys/vm/drop_caches  

#释放pagecache和inode/dentry
echo 3 > /proc/sys/vm/drop_caches

3.4 解决方案

sync
sync
sync
echo 1 > /proc/sys/vm/drop_caches

注:建议不要释放inode和dentry,笔者在CentOS 6.8中尝试使用过,会导致虚拟机死机(当然,这有可能是个特例)


参考文献:

======================================================

http://blog.csdn.net/fall221/article/details/46290563

http://www.cnblogs.com/panfeng412/p/drop-caches-under-linux-system.html


转载于:https://blog.51cto.com/cmdschool/1962465

最后

以上就是现实洋葱为你收集整理的记一次解决缓存不释放导致内存耗光问题的全部内容,希望文章能够帮你解决记一次解决缓存不释放导致内存耗光问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(28)

评论列表共有 0 条评论

立即
投稿
返回
顶部