标签:方法 磁盘io ase docker 虚拟内存 无法 缓存 控制 信息
本文参考
? https://blog.csdn.net/top_gun_1/article/details/50777329
我这里知道这个消息是通过bearychart报警消息获得的,报警的信息是,当前服务器内存使用值已经达到了百分之九十二
由于该机器我无法从外网连接,所以周六来公司看了下情况,通过htop
命令看到是MongoDB在大量吃内存,物理内存吃掉14个G,虚拟内存吃掉16个G
一点解释:
目前,MongoDB使用的是内存映射存储引擎,它会把磁盘IO操作转换成内存操作,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能。MongoDB并不干涉内存管理工作,而是把这些工作留给操作系统的虚拟缓存管理器去处理,这样的好处是简化了MongoDB的工作,但坏处是你没有方法很方便的控制MongoDB占多大内存,事实上MongoDB会占用所有能用的内存,所以最好不要把别的服务和MongoDB放一起。
Linux内核有oom kill 机制,大概意思就是内存使用过高,会随机干掉一些服务(这里我也不清楚它是如何选择干掉的服务的,应该是根据进程号.docker可以设置不受oom kill机制的限制,但很危险)
由于数据库都是在docker里的,我打算跟领导说下,使用docker资源限制机制,暂时的话先不要停掉容器来达到缓解内存的目的
标签:方法 磁盘io ase docker 虚拟内存 无法 缓存 控制 信息
原文地址:https://www.cnblogs.com/joinbestgo/p/11439465.html