2

我将 Meteor 与在 Windows 上运行的单独 MongoDB 一起使用。我将 MongoDB 作为服务运行。

我的 MongoDB 日志充满了以下内容:

Mon Mar 04 14:15:36 [conn19] info DFM::findAll(): extent 0:55000 was empty, skipping ahead. ns:webfm.graphdata
Mon Mar 04 14:15:38 [conn17] info DFM::findAll(): extent 0:55000 was empty, skipping ahead. ns:webfm.graphdata
Mon Mar 04 14:15:40 [conn16] info DFM::findAll(): extent 0:55000 was empty, skipping ahead. ns:webfm.graphdata
Mon Mar 04 14:15:43 [conn18] warning: can't find plugin [desc]
Mon Mar 04 14:15:43 [conn19] info DFM::findAll(): extent 0:55000 was empty, skipping ahead. ns:webfm.graphdata
Mon Mar 04 14:15:49 [conn18] info DFM::findAll(): extent 0:55000 was empty, skipping ahead. ns:webfm.graphdata
Mon Mar 04 14:16:14 [conn16] warning: can't find plugin [desc]
Mon Mar 04 14:16:20 [conn17] info DFM::findAll(): extent 0:55000 was empty, skipping ahead. ns:webfm.graphdata
Mon Mar 04 14:16:24 [conn16] warning: can't find plugin [desc]

Mon Mar 04 14:16:32 [conn20] info DFM::findAll(): extent 0:60000 was empty, skipping ahead. ns:webfm.history
Mon Mar 04 14:16:34 [conn16] warning: can't find plugin [desc]

从我可以找到的“findAll(): extent 0:55000 ...”似乎与我的应用程序频繁删除数据有关。那是对的吗?

找不到插件 [desc] 怎么样?那个插件是什么?我该如何解决?

4

3 回答 3

1

该消息实际上是信息性的且无害的。它告诉您整个范围是空的。如果您最近删除了大量数据,则可能会发生这种情况。

您可以使用compact命令对集合进行碎片整理和压缩(基本上将其重新写入磁盘并在集合上重新创建索引),这将消除日志消息。请注意,compact 是一项资源密集型操作。

于 2013-03-28T17:30:52.130 回答
1

从我可以找到的“findAll(): extent 0:55000 ...”似乎与我的应用程序频繁删除数据有关。那是对的吗?

根据尼克的回答,该消息extent 0:55000 was empty, skipping ahead与您的频繁删除有关。这是跳过空数据范围时发出的警告,0:55000作为范围位置。当您向该集合添加更多数据时,通常会重复使用该空间。

如果您经常添加和删除此集合并且担心磁盘空间,您还可以考虑:

  • 启用usePowerof2Sizes此集合的标志(MongoDB 2.2 或更高版本)以更有效地重用已删除空间
  • 将临时集合保存在单独的数据库中,并在完成后删除数据库(而不是运行频繁的压缩或修复)

找不到插件 [desc] 怎么样?那个插件是什么?我该如何解决?

这通常意味着您有一个无效的索引定义,并且找不到索引“插件”来处理它。在此示例中,我希望您有一个使用属性desc而不是声明的索引字段-1

您可以使用以下命令检查索引定义db.collection.getIndexes()

use webfm
db.graphdata.getIndexes()
于 2013-04-02T23:12:47.407 回答
0

我不绝对确定这是一个问题。您可能运行 mongodb 时过于冗长,因此出于调试原因,它会在警告和进程中显示过多的细节。这是一件好事,因为如果存在问题或错误,则可以识别问题。

但是如果你想删除它:

减少 'v' 的数量或在启动命令中删除它们。

如果您使用配置文件更改其中任何一个,您必须为 false:

vvvvv = false
vvvv = false
vvv = false
vv = false
v = false
于 2013-03-04T20:08:56.683 回答