监测MongoDB的“后台操作”?

编辑:基本上我正在寻找一些关于如何理解我的MongoDB实例上运行的后台操作的提示,并可能在必要时减less/禁用它们,以免它们干扰运行testing。 我已经尝试了mongostatmongotop但没有find任何帮助我了解后台操作正在运行以及正在启动的操作。 在开始运行我的testing之前, db.currentOp()在运行时始终返回一个空数组。

我经常运行testing,同时开发节点(摩卡,黄瓜)。 从昨天开始,大约有25%的服务器初始化尝试连接到mongodb时出现以下错误:

 **Unhandled rejection MongoError: exception: cannot perform operation: a background operation is currently running for collection** somecollection at Function.MongoError.create (/somepath/node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11) at /somepath/node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:793:66 at bound (domain.js:254:14) at runBound (domain.js:267:12) at Callbacks.emit (.../node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:94:3) at null.messageHandler (/somepath/node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:235:23) at Socket.<anonymous> (/somepath/node_modules/pow-mongodb-fixtures/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:294:20) at Socket.emit (events.js:107:17) at readableAddChunk (_stream_readable.js:163:16) at Socket.Readable.push (_stream_readable.js:126:10) at TCP.onread (net.js:538:20) 

在运行testing之前,我们使用pow-mongodb-fixtures来清除数据库并填充一些基本数据,这就是发生这种情况的原因。 当这种情况发生时,AFAIK没有什么大的改变。 任何想法,我甚至可以开始研究这个错误的来源?

       

网上收集的解决方案 "监测MongoDB的“后台操作”?"

在这种情况下你的朋友将是:

 db.currentOp(true) 

指定true包括空闲连接和系统操作的操作。

看到这里: https : //docs.mongodb.org/manual/reference/method/db.currentOp/

那么我不打算把这个标记为答案,因为我正在寻找一种方法来监视正在发生的事情,并通过mongo db找出问题。 不过,我弄清楚了这个问题。 不是世界上最有用的解决scheme,但事实certificate,我们是asynchronous启动服务器,这将运行所有mongoose模式,从而检查/重新创build所有索引,或多或less同时我运行fixtures代码清除我的集合。

简而言之,不要在创build索引时尝试删除集合:)