账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于mongodb3.4的内存的一些困惑
    33
    0

    大家好,有个问题想请大家帮忙解惑。
    我们前段时间将mongodb升级到3.4.6,我们每天有个删除历史数据的动作,数据库只保存几天的数据,数据量不大
    scm:PRIMARY> show dbs
    admin 0.000GB
    local 15.234GB
    scm 4.198GB
    scm:PRIMARY>
    包括local里面的oplog一共才20G
    但是通过top和mongodb自己的命令查看内存情况,发现远远超过了20G
    通过db.serverStatus().wiredTiger.cache查看

        "bytes belonging to page images in the cache" : 27709364089,
        **"bytes currently in the cache" : 85890560448,--大约80G**
        "bytes not belonging to page images in the cache" : 58181196359,
        "bytes read into cache" : 51861301488,
        "bytes written from cache" : NumberLong("4133625131732"),
        **"maximum bytes configured" : 107374182400,--设置最大inner内存wiredTigerCacheSizeGB=100**
        "maximum page size at eviction" : 4481266,

    通过db.serverStatus().mem查看

        **"resident" : 106492,--大约106G 应该是file system cache=106-80=24G**
        "virtual" : 112000,

    问题1::80G的inner cache包含哪些数据,我知道的有热数据和索引(现在看来,即使是所有的数据放到内存,包含oplog,也才20G),还有oplog会占内存吗。
    问题2:inner cache可以通过wiredTigerCacheSizeGB参数设置最大大小,那么file system cache大小有什么办法限制吗,现在看来这个file system cache很大,里面主要存了什么数据

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 酷girl. 普通会员 1楼

      MongoDB 3.4引入了一些新的内存优化功能,例如使用新的 Cursor API 和 FindAndModify API。这些改进可以显著提高应用程序的性能和内存使用。然而,学习如何有效地使用这些新功能需要一些时间和实践。

      以下是一些关于 MongoDB 3.4 内存优化的常见问题及其解决方案:

      1. 如何使用新的 Cursor API ? Cursor API 可以帮助你高效地在内存中迭代数据集合。它允许你遍历集合中的文档,并且在文档迭代过程中更新数据集合。例如,你可以在迭代文档时保存中间结果,而不是在每次迭代后都创建新的文档。

      解决方案:熟悉 Cursor API 的使用方式,并在必要时使用它。在创建 Cursor 时,可以指定一些选项,例如 writeConcernupsert,以提高性能和避免错误。

      1. 如何使用新的 FindAndModify API ? FindAndModify API 可以在不更新集合的情况下修改文档。它允许你指定要查找的文档,以及如何更新这些文档。例如,你可以使用 FindAndModify API 检查文档是否已存在,然后根据你的条件进行更新。

      解决方案:熟悉 FindAndModify API 的使用方式,并在必要时使用它。在使用 FindAndModify API 时,需要特别注意文档的更新,因为文档一旦修改,就不能更改。

      1. 如何处理内存泄漏? MongoDB 3.4 提供了一些内存泄漏检测工具,可以帮助你识别和解决内存泄漏问题。例如,MongoDB Compass 和 MongoDB shrink 命令可以帮助你找出哪些集合或索引正在使用大量的内存。

      解决方案:使用这些工具来检查和解决问题。同时,避免在应用程序中创建过多的集合或索引,以及避免在内存中存储大量的数据。

      总的来说,MongoDB 3.4 提供了一些新的内存优化功能,可以帮助提高应用程序的性能和内存使用。然而,学习如何有效地使用这些新功能需要一些时间和实践。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部