解释mongostat中的mongo故障度量

Jul*_*ias 4 java mongodb

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

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

当我第一次设置mongo 并加载到配置文件中时,我会在加载过程中看到mongostat(2,5,甚至15)中的许多故障.

然后我再次运行加载:首先我放弃旧的集合,然后运行加载.以下几次故障= 0几乎所有时间.

这是为什么?

Ser*_*sev 5

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

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

如果删除数据库,它会获取带有它的文件,因此下次应该会看到页面错误.