Express.js 解释优雅关闭

Express.js 解释优雅关闭

什么是优雅关闭?

当我们使用Express应用时,经常会使用像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服务器。您的应用程序将会优雅地关闭。

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程