mongodb连接超时错误

我用mongodb数据库和node.js v12.0.10来连接和更新mongodb集合。 连接代码如下:

async.parallel({ RE5: function (cb) { MongoClient.connect(config.riskEngineDB, function (err, r5DB) { cb(err, r5DB); }) }, MDB: function (cb) { MongoClient.connect(config.monitoringDB, function (err, mDB) { cb(err, mDB); }) } }, function (err, DBs) { assert.equal(null, err); console.log("Connected correctly to Dbs"); // ..doing updates.. 

})

经过一段时间的运行,脚本打印出如下错误:

  { [MongoError: connection 39 to 127.0.0.1:27017 timed out] name: 'MongoError', message: 'connection 39 to 127.0.0.1:27017 timed out' } 

为了您的信息,我使用了不同的mongodb连接选项,但没有任何意义。

由于查询花了太多时间来回复,我也有类似的经历

您在节点mongo驱动程序中有两个可configuration的超时:

connectTimeoutMSsocketTimeoutMS ,都默认为30秒( http://mongodb.github.io/node-mongodb-native/2.2/reference/connecting/connection-settings/

如果您的查询需要30秒以上的时间才能发送第一个结果,则会以连接超时错误结束。

如果您的查询在两个结果之间花费超过30秒,则可能会由于池缩小而导致连接closures。

您可能希望增加超时,或者确保您的查询足够快(例如,创build一个索引)。 我build议加快查询,因为增加超时可能会有性能下降。