在MongoDB中这意味着什么?

问题描述:

我刚刚安装了MongoDB。我不'复制。我打开的所有配置文件都是auth。我正确地配置了它。在MongoDB中这意味着什么?

它主要工作,但随机时,它“挂起”,并导致我的CPU跳到LOAD 4.0,当我做“顶”。

当我查看消息日志,我看到很多这样的:

[DataFileSync] flushing mmap took 0ms for 5 files 
[DataFileSync] flushing mmap took 0ms for 5 files 
[DataFileSync] flushing mmap took 0ms for 5 files 

这很奇怪,因为它只是挂起并没有任何反应。这些消息不断出现,并且“接受的连接”不再出现。我没有复制,并且我没有使用除auth之外的任何设置配置mongo。

好,蒙戈没有崩溃一次,我做了一个“命令重启”一周时间,同时蒙戈仍然runningl

即同步看起来相当正常的,只花了0毫秒...

也就是说,MongoDB的确实有数据库级锁,这样即使有些操作引起的锁(如长的查询,将“挂起”您的整个数据库,建立一个大的索引等)

我会关闭你的数据库并运行一个repair

您可以运行validate第一...去看看,如果发现什么...

> db.mycollection.validate(); 

这可能是有在造成你所说的不正常关机您的数据文件错误...而且这些错误会越来越严重。

$ ./mongod --repair 

如果没有太多的负载,您也可以运行“live”修复。

> db.repairDatabase(); 

您也可以尝试和anylise的mongostat的结果...

MongoDB使用内存映射文件;数据更改偶尔会从RAM刷新到磁盘。这将是你看到的地图刷新。

+0

但为什么它挂,并导致我的CPU秒杀到4.0吗?我看到的只是那些登录到日志文件的地图。我在日志文件中看不到其他东西 – TIMEX 2011-02-05 21:19:35

默认情况下,mongodb会每60秒将更改刷新到磁盘。不过,在这段时间内不应该挂断电话。

你用的是什么版本的mongodb?

+0

我正在使用:MongoDB shell版本:1.6.5 – TIMEX 2011-02-05 21:16:10

+0

另外,rsyslogd尖峰到99%以及mongod – TIMEX 2011-02-05 22:07:15