日常填坑 ——linux服务器,mongodb吃内存,导致服务器缓慢

通过free -h 命令,发现服务器可用内存不足,并发现大量的内存被占用到buff/cache中。
在这里插入图片描述

一类,直接可以通过命令进行释放

sync; echo 3 > /proc/sys/vm/drop_caches

在这里插入图片描述
可以看到,cached的19G内存已经释放。

这种情况还算比较乐观的情况,一般也不用过度分析buff/cached占比这么高的原因,比较中轨中轨的解决方案是,写一个定时脚本进行buff/cached占用内容的释放,这里不做重点展示,可自行google.

第二类,通过释放内存的命令无法正常释放buff/cached占用的内容

遇到这种情况一般就需要具体分析是什么进程导致buff/cached占比这么高?

如果想分析都是哪些进程导致buffers/cached占比这么高,需要安装hcache.

1:安装hcache

网上搜索到比较多的方式是:wget http://7xir15.com1.z0.glb.clouddn.com/hcache
但是已经访问404了,也可以直接访问hcache的github项目,直接下载二进制文件,在拷贝到服务器上,git地址:https://github.com/silenceshell/hcache

2: 授权

chmod +x hcache

3:查看占用buff/cached的进程

hcache -top 10

日常填坑 ——linux服务器,mongodb吃内存,导致服务器缓慢_第1张图片
发现项目中是mongodb占用了大部分的内存,查看相关资料得知3.4版本后,内存默认使用的是(系统内存-1GB)*50%

日常填坑 ——linux服务器,mongodb吃内存,导致服务器缓慢_第2张图片

4: 解决方法

通过以下命令启用MongoDB

/usr/bin/mongod --config /etc/mongod.conf --fork --wiredTigerCacheSizeGB 8

关键在于 --wiredTigerCacheSizeGB 8 限制缓存使用内存大小为8GB,这样MongoDB使用的内存就是(8GB-1GB)* 50%

你可能感兴趣的:(日常填坑)