java - 解释 mongostat 中的 mongo 故障指标

标签 java mongodb

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

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

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

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

这是为什么?

最佳答案

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

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

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

关于java - 解释 mongostat 中的 mongo 故障指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11066438/

相关文章:

Java 图形在 OS X 中不显示

java - 如何在java中将千分之一或更低的字符串格式化为日期?

Java:PrintWriter 对象不输出文件中的文本?

java - 使用 spring jpa 编写 group by 表达式

mongodb - 如何从处理程序访问全局 MongoDB 连接?

node.js - 与 Docker 和 Bitbucket 管道的集成测试

java - Java Web Start 和 Safari 的问题

node.js - 尝试使用唯一索引保存 Mongoose 文档时, Node 服务器崩溃

javascript - mongo find选择器导致返回不匹配的结果

c# - MongoDB .NET 驱动程序 - 将 lambda 表达式转换为 JSON 对象