解释 mongostat 中的 mongo faults 指标

4
我有一个关于mongostat中故障指标的问题。 我正在运行mongo 2.0,使用ubuntu系统,用raid-0配置了两个32G的磁盘。
测试数据为插入500万个用户资料到mongo数据库中。 我使用单线程执行该进程,并使用insert(批量1000个条目)。
当我第一次设置mongo并将资料加载到其中时,mongostat显示出很多错误(2、5甚至15)。
然后我再次运行加载程序:首先删除旧集合,然后运行加载程序。此后,大部分时间faults值都为0。
这是为什么?
1个回答

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

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

如果您删除数据库,则会将文件与之一起删除,因此下次应该会出现页面错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接