mongdb内存管理机制:
目前,Mongdb使用的是内存映射存储引擎,它会把磁盘IO操作转换成内存操作,如果是读操作,内存中多的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能,Mongdb并不干涉内存管理工作,而是把这些工作留给操作系统的虚拟缓存管理器去处理,这样的好处就是简化了mongdb的工作,提高了mongdb的读写效率,但坏处就是会占用很大的内存,读取数据越大占用内存越高;
方便控制内存的机制,一种是加索引,提高效率并且减少内存的占用,但是这种方法不是最有效控制内存的方法;
一种是cgroup这个是linux的一个内核组件,只需要安装控制接口程序即可 :
1.安装并启动:cgroup
2.添加一个内存组:group DBLimitedGroup
3.添加进程限制:指定进程使用此内存组:
4.重启cgroup
6.启动mongdb:cgexec -g 内存组 ./mongod -f {mongdbPath} &
7.给mongdb添加缓存限制:添加一个配置文件或者直接使用以下命令启动:
mongod --dbpath /a/path/to/db --logpath /a/path/to/log --storageEngine wiredTiger --wiredTigerEngineConfigString="cache_size=200M" --fork
【教你玩转mongdb占用缓存内存过大导致宏机】不知道具体怎么操作的可以留言讨论,