Graceful Shutdown in Node.js: Stop Dropping Requests
Graceful Shutdown in Node.js: Stop Dropping Requests Your server gets a SIGTERM. It dies immediately. In-flight requests get 502s. Here is how to shut down properly. The Basic Pattern import http f...

Source: DEV Community
Graceful Shutdown in Node.js: Stop Dropping Requests Your server gets a SIGTERM. It dies immediately. In-flight requests get 502s. Here is how to shut down properly. The Basic Pattern import http from "http"; let isShuttingDown = false; const server = http.createServer(app); async function gracefulShutdown(signal: string) { isShuttingDown = true; server.close(); const timeout = setTimeout(() => process.exit(1), 30000); await Promise.all([closeDatabase(), closeRedis(), flushLogs()]); clearTimeout(timeout); process.exit(0); } process.on("SIGTERM", () => gracefulShutdown("SIGTERM")); process.on("SIGINT", () => gracefulShutdown("SIGINT")); Health Check During Shutdown app.get("/health", (req, res) => { if (isShuttingDown) return res.status(503).json({ status: "shutting_down" }); res.json({ status: "healthy" }); }); Returning 503 tells the load balancer to stop sending new traffic. What to Clean Up Stop accepting new requests Finish in-flight requests (with timeout) Close databa