📜  解释 Express.js 中的优雅关闭

📅  最后修改于: 2022-05-13 01:56:17.248000             🧑  作者: Mango

解释 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);