【问题标题】:Is there a way to see what's in MongoDB's cache, and what's not?有没有办法查看 MongoDB 缓存中有什么,什么不是?
【发布时间】:2015-11-23 16:47:23
【问题描述】:

我最近遇到了一个问题,磁盘每秒读取操作数猛增约 1000 倍(频繁出现峰值),并达到了我们在 AWS 中预置的 IOPS 限制,从而减慢了一切速度。

我最初的想法是,有一些东西将数据大量写入 MongoDB,将预期在缓存中的数据驱逐回磁盘。

有什么方法可以明确知道缓存中的内容,而不是打开和关闭可能导致此问题的各种功能?

以更具体针对我的问题的方式表述它 - 找出为什么应该在内存中的一段数据突然不存在的最佳方式是什么。

编辑: 我的设置详细信息 - 它是 mongodb 3.0.6 的副本集,以 WiredTiger 作为存储引擎。

【问题讨论】:

  • 如果您告诉我们您正在运行的 MongoDB 版本可能会有所帮助。
  • 现在添加,谢谢提及
  • 如果您的内存利用率在 85% 左右或更高,您可以确定工作集不再完整。
  • 是的,但有趣的是,有些东西会导致最近的文档从内存中清除。即使不是整个工作集,我们也基于这些文档很可能在内存中的假设编写了一些查询。
  • 这是一个有上限的集合吗?

标签: mongodb


【解决方案1】:

您可以使用这些有趣的ootb 工具进行分析:

  1. mongotop optional_secs :此命令显示 mongo 进程在哪个集合中花费时间。它还显示了读取和写入所花费的时间。
    • 关键点: 异常高的读取时间通常意味着不使用索引。 异常高的写入时间可能是由于在插入时需要维护索引。

  1. mongostat : (like iostat) 告诉我们 mongo DB 的 IO 统计信息。
    • 关键点:idx_miss % - 如果程序正在使用索引,则索引未命中率(内存)意味着程序必须在磁盘中搜索。

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2010-12-15
    • 2013-03-25
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多