MongoDB内存飙升的解决办法

MongoDB 内存飙升的解决办法

1.问题背景

最近有这么一个需求,需要大批量更新MongoDB 中的一个比较大的表,由于业务需要,在操作时,需要频繁的进行查询和删除新增操作。接口执行后,观察到MongoDB 的占用内存快速飙升,从几十兆直接来到了2个G。
在这里插入图片描述

2.问题原因:

MongoDB 会利用操作系统的内存缓存机制来提升性能,尤其是在频繁的读写操作中。这会导致内存占用逐渐增加,直到达到分配的最大内存上限。

3.解决办法:

调整MongoDB 的内存限制,首先你需要找到你的mongo的安装目录,我这里是在本机windows上修改的,我的mongo是4.0,这是我的目录:

D:\soft\MongoDB\Server\4.0\bin\mongod.cfg

然后对这个mongod.cfg做修改,在其中修改storage下的wiredTiger属性如下:

storage:
  dbPath: D:\soft\MongoDB\Server\4.0\data
  journal:
    enabled: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1

上面配置的dpPath和journal不需要动,只需要修改wiredTiger属性即可,设置成功后mongo的内存大小则限制为1G。

4.占用的内存默认分配上限是多少?

有的,但是这个上限较高,如果机器中有其它占用内存的进程,可能导致机器死机。。。
内存的上限计算规则如下:

从MongoDB 3.4开始,默认的WiredTiger内部缓存大小是以下两者中的较大者:

- 50%(RAM-1 GB),或
- 256 MB。

例如,在总共有4GB RAM的系统上,WiredTiger缓存将使用1.5GB RAM()。
相反,总内存为1.25 GB的系统将为WiredTiger缓存分配256 MB,
因为这是总RAM的一半以上减去1 GB。`0.5 * (4 GB - 1 GB) = 1.5 GB``0.5 * (1.25 GB - 1 GB) = 128 MB < 256 MB`

引用链接:
WiredTiger存储引擎内存分配

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值