javascript / expert
Snippet
Orchestrierung eines sanften Shutdowns (Graceful Shutdown)
Eine professionelle Node.js-Anwendung muss Terminierungssignale wie `SIGTERM` verarbeiten. `server.close()` verhindert, dass der Server neue Verbindungen akzeptiert, wartet aber darauf, dass bestehende beendet werden. Ein sekundärer Timeout stellt sicher, dass der Prozess schließlich endet, selbst wenn Verbindungen hängen bleiben.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const http = require('http');const server = http.createServer((req, res) => res.end('OK'));process.on('SIGTERM', () => {console.log('SIGTERM received. Closing server...');server.close(() => {console.log('Server closed. Exiting process.');process.exit(0);});// Force exit after timeout if connections hangsetTimeout(() => {console.error('Forcing exit after timeout');process.exit(1);}, 10000);});
nodejs
Erklärung
1
server.close(() => { ... })
Wartet darauf, dass alle aktiven Keep-Alive-Verbindungen geschlossen werden, bevor der Prozess beendet wird.
2
setTimeout(..., 10000)
Sicherheitsanker, um zu verhindern, dass der Prozess unendlich lange hängen bleibt.