【发布时间】:2019-06-26 20:25:22
【问题描述】:
我正在使用带有非常大的 Mongo 数据库的 Mongoose,我希望像 MySet.find({}) 这样的昂贵查询在 10 秒后超时。
我尝试在我的连接上设置套接字超时,但如果超过超时,服务器就会崩溃:
var options = {server: {socketOptions: {socketTimeoutMS: 10000}}};
var conn = mongoose.connect('mongodb://localhost/my_db', options);
我尝试将maxTimeMS 选项传递给find 函数,但这根本没有任何效果:
MySet.find({}, {}, {timeout: true, maxTimeMS: 10000}, function(err, doc) {});
有什么想法吗?
【问题讨论】:
-
您使用的是 MongoDB 2.6 或更高版本吗?
-
mongo --version说MongoDB shell version: 2.6.8。 -
看起来 Mongoose 对
maxTimeMS选项的支持是 added in 3.8.13。你的猫鼬版本是什么? -
Mongoose 在 3.8.24
-
MySet.find({}, {}, {maxTime: 10}, function(err, doc) {}) 之类的作品,但仅适用于 maxTime 的小值。起初我认为 maxTime 需要几秒钟或十分之一秒,但值 10 使它几乎立即超时,而值 100 使它永远不会超时。