Node.js SIGTERM实现注意事项

时间:2015-09-08 17:06:43

标签: javascript node.js

我有一个无状态node.js应用程序。它是一个使用express实现的api,它连接到mongoDB数据库。每个请求完全独立于其他请求(ergo无状态)。

我想实现SIGTERM以便优雅地关闭,但我不知道应该考虑什么。

我确切知道的是我应该关闭我的数据库连接。但是,如果我这样做:

process.on('SIGTERM', function () {
  server.close(function () { //Stops express
    db.close(false, function() { //Closes database connection
      process.exit(0);
    });
  });
});

我可以确保没有请求被这样做中断吗?如果没有,我如何知道是否正在提出请求以及如何等待它完成?我应该在这段时间内停止收听请求吗?如果是这样,怎么样?

提前感谢您的答案。

1 个答案:

答案 0 :(得分:1)

假设serverhttp.Server个实例,调用.close()将阻止服务器接受新连接(documentation),但现有请求将继续运行,直到它们为& #39;重新完成。

只有在处理完所有请求后才会调用回调函数,因此可以安全地假设此时您可以关闭数据库连接(不会再听到任何请求)