我正在开发一个应用程序。 MongoDB服务器托管在远程主机上。所以,我非常热衷于使用socketTimeoutMS: 30000
来确保发生错误 - 并且我在应用程序中记录了问题。socketTimeoutMS不能在非常简单的环境中工作
我试着用URL设置MONGO_URL
为mongodb://localhost/ddd18?socketTimeoutMS=4000'
。
或使用该选项:
require('mongodb').MongoClient.connect(process.env.MONGO_URL, { server: { socketOptions: { socketTimeoutMS: 6500, connectTimeoutMS: 6500 } } } , function(err, db){
或者:在选项(如直{ socketOptions: { socketTimeoutMS: 6500, connectTimeoutMS: 6500 } }
甚至{ socketTimeoutMS: 6500, connectTimeoutMS: 6500 }
)
require('mongodb').MongoClient.connect(process.env.MONGO_URL, { mongos: { socketOptions: { socketTimeoutMS: 6500, connectTimeoutMS: 6500 } } } , function(err, db){
或者其他组合。
如果我做到以下几点:
- 运行我的应用程序(连接罚款的MongoDB)
- 杀MongoDB的共
- 尝试和执行操作
的尝试将挂起永远。实际上,它会挂在那里,然后当我最终重新启动MongoDB时,操作将实际启动并完成。
我遇到的问题是我的客户端有30秒的超时时间。如果服务器没有,而且由于某种原因它会沉默几分钟,那么客户报告为“失败”的所有操作都将实际发生 - 而且这很愚蠢。
我在做什么明显错误?
相关文章:http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html