我有使用 express.js 和 mongodb 作为数据存储的 node.js 网络服务器。此服务器由 控制runit
,我正在尝试实现一种优雅关闭服务器的方法。
我正在为 and 实现信号处理程序SIGINT
,SIGTERM
并且我知道您可以通过调用.close()
由createServer()
. 到目前为止,一切都很好。
但是,即使没有更多请求即将出现,系统中可能已经有许多请求需要完成,然后我才能关闭数据库。
我正在使用 mongodb ReplicaSet,我认为如果我立即调用db.close()
,其中一些请求可能会以某种方式失败。是否有某种方法可以以允许挂起的数据库查询完成的方式关闭数据库,或者我是否必须手动设置一个 +/- 计数器来查看有多少“活动”查询处于挂起状态,然后等待关闭直到它达到 0 ?