很少使用的猫鼬连接(保持活动状态?)

WHI*_*LOR 2 mongoose mongodb

在我的应用程序中,我有一个数据库,代码将定期连接到该数据库,但它很少使用(可能每天/每周一次)。

我可以在模块(应用程序)初始化时创建连接,然后在应用程序运行生命周期时跨模块使用它吗?

var conn = mongoose.createConnection(process.env.SOME_DB)
Run Code Online (Sandbox Code Playgroud)

我不确定我是否应该有猫鼬文档中建议的保持活动选项:

options.server.socketOptions = options.replset.socketOptions = { keepAlive: 1 };
mongoose.connect(uri, options);
Run Code Online (Sandbox Code Playgroud)

或者标准的自动重新连接功能就足够了?

我也不是什么“长时间运行的应用程序”?实际上,任何实时服务都是长时间运行的应用程序,是否应该为生产中的所有此类服务启用保持活动状态?

也不确定什么是连接池以及它们如何影响。

Nei*_*unn 5

Mongoose 文档中有对此的引用:

http://mongoosejs.com/docs/connections.html

是的,这通常是个好主意。

该文档中还解释了连接池。但一般来说,Mongoose 会保持多个对服务器/副本集/mongos 实例开放的套接字连接,而不是一个以允许并发处理请求。是的,即使在 IO 上进行异步回调,也会有等待时间,因此连接池允许另一个通道在一个通道繁忙时进行通话。

是的,这通常是个好主意。