解释 Express.js 中的优雅关闭
什么是优雅关机?
我们在使用快递应用时,经常会用到 Forever、PM2、SystemD 等程序管理器。当用户想要结束连接或停止服务器时,首先需要关闭或完成所有连接和请求,然后才能关闭服务器。应用程序。这意味着不应保持任何流量或数据保持打开状态,并且应关闭正在使用的应用程序的资源。
正常关闭过程:为此,向应用程序发送一个 SIGTERM(程序管理器发送它)信号,告诉它它将被杀死。收到此信号后,应用程序停止接受新请求,让负载均衡器知道它不会接受任何新请求。所有活动的请求都已完成。包括数据库连接在内的所有数据和流量都被清除。毕竟,这个过程发生了,应用程序以退出状态 0 退出该过程。
这就是优雅关机的整个过程。这避免了关闭服务器时可能发生的冲突的任何副作用,并且可以毫无困难地开始新的部署。
让我们借助一个例子来理解。
第 1 步:首先,我们需要捕获我们发送给应用程序的 SIGTERM 信号。为此,我们使用 process.on( )函数。
function gracefulshutdown() {
console.log("Shutting down");
myApp.close(() => {
console.log("HTTP server closed.");
// When server has stopped accepting
// connections exit the process with
// exit status 0
process.exit(0);
});
}
process.on("SIGTERM", gracefulshutdown);
第 2 步:当 SIGTERM 信号被捕获时,我们调用优雅关闭函数,成功关闭应用程序。
示例:在此,我们启动一个基本的 express 服务器。您的应用程序将正常关闭。
Javascript
const express = require("express");
const myApp = express();
const port = 3000;
// Starting the server
myApp.get("/", (req, res) => {
res.send("Your express app has started!");
});
// App listening on port 3000
myApp.listen(port, () => {
console.log(`App running at http://localhost:${port}`);
});
function gracefulshutdown() {
console.log("Shutting down");
myApp.close(() => {
console.log("HTTP server closed.");
// When server has stopped accepting connections
// exit the process with exit status 0
process.exit(0);
});
}
process.on("SIGTERM", gracefulshutdown);