MONGODB内存使用分析

当MongoDB内存使用增加导致页错误升高时,性能会下降。可通过监控系统的faults来判断,高faults时可考虑碎片整理或分片。更新文档可能导致碎片,MongoDB的compact操作可能影响服务,可以通过验证、数据大小和存储大小判断是否需要紧凑。实时监控并适时采取优化措施是关键。
摘要由CSDN通过智能技术生成

  下午在和同事讨论mongodb在内存吃紧后,性能急剧下降的问题.同事问什么时候什么情况下mongodb性能会下降?有什么方法可以优化内存的使用?

 

首先我们要了解mongodb是怎么样使用内存.mongodb内存吃的快是因为mongodb对数据文件进行了file mapping,其它的部分如:index什么的并不占多少内存.当file mapping 用的内存越来越的时候,那么pages faults/sec 就会越来越高,于是性能会下降.

 

对于第一个问题: 

  1. 监控系统的faults, 可以mongostat进行查看(Linux only).当faults很高的时候,mongodb性能就会下降.此时就可以考虑进行碎片整理,或者sharding了.
  2. db data file大了并不意味着faults一定会高.因为要看db中冷热数据的比例.

对于第二个问题:

  1. 进行碎片整理.因为mongodb在update一个document的时候,如果update后的document比原来的大,那么这个document会放尾巴上去.这也是有时候用mogodump一个运行中的系统会出现数据不一致性的情况的原因.只是mongodb不支持在线整理.而且它提供的db.repairDatabase()速度也比较慢.  所以想进行compact的话,可以考虑将primary关掉,然后删除所有数据文件,然后再上线.
    可以运行以下命令查看是否需要进行compact
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值