【问题标题】:explain mongo faults metric in mongostat解释 mongostat 中的 mongo 故障指标
【发布时间】:2012-06-19 10:54:02
【问题描述】:

我对 mongostat 中的故障指标有疑问。 我在 ubuntu 上运行 mongo 2.0,在 raid-0 配置中有 2 个磁盘(每个 32G)。

将 500 万个用户配置文件加载到 mongo 中的测试。 我在单线程中执行该过程并使用插入(1000 个条目的批量)。

当我第一次设置 mongo 并将配置文件加载到其中时,我在加载过程中看到 mongostat(2,5,甚至 15)中有许多错误。

然后我再次运行加载:首先我删除旧集合,然后运行加载。 以下时间几乎都是faults=0

这是为什么呢?

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    MongoDB 通过内存映射文件机制将内存管理传递给操作系统。基本上,这种机制允许程序打开比已安装 RAM 大得多的文件。当程序尝试访问该文件的一部分时,操作系统会查看该部分(页面)是否在 RAM 中。如果不是,则发生page fault 并且从磁盘加载该页面。 mongostat 中的faults/s 指标准确地显示了这一点:每秒发生了多少页面错误。

    现在,当您启动 mongo 并将数据加载到其中时,数据文件不会映射到内存中,它们必须从磁盘加载(页面错误)。当你删除一个集合时,它在逻辑上会被删除,但对应的物理文件不会被删除,会被重复使用。由于它们已经在 RAM 中,因此没有页面错误。

    如果您改为删除数据库,它会带走文件,因此您下次应该会看到页面错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 2012-01-25
      相关资源
      最近更新 更多