Middle+
Können Sie erklären, was ein geordneter Shutdown ist und wo er angewendet wird?
sobes.tech KI
Antwort von AI
Ein geordneter Herunterfahren (graceful shutdown) ist ein Prozess, bei dem die Anwendung korrekt beendet wird. Dabei kann sie laufende Operationen abschließen, Ressourcen freigeben und den Zustand speichern, bevor sie stoppt.
Anwendungen für das geordnete Herunterfahren:
- Bereitstellung neuer Versionen der Anwendung: Ermöglicht einen reibungslosen Austausch der alten Version durch die neue, ohne Daten zu verlieren oder Benutzersitzungen zu unterbrechen.
- Geplante Neustarts oder Wartungsarbeiten: Stellt sicher, dass alle offenen Verbindungen geschlossen und Aufgaben vor dem Stoppen des Dienstes abgeschlossen werden.
- Reaktion auf Fehler oder Skalierung: Bei Lastreduzierung oder Problemen können Dienste korrekt gestoppt werden.
Beispiel für die Implementierung in Node.js:
// process.js
const http = require('http');
const server = http.createServer((req, res) => {
setTimeout(() => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, World!\n');
}, 2000); // Simulation einer längeren Operation
});
server.listen(3000, () => {
console.log('Server hört auf Port 3000');
});
// Signal-Handler für SIGTERM für geordnetes Herunterfahren
process.on('SIGTERM', () => {
console.log('SIGTERM-Signal empfangen. Server wird geschlossen...');
server.close(() => {
console.log('Server geschlossen. Prozess wird beendet.');
process.exit(0);
});
// Erzwingendes Beenden nach einer bestimmten Zeit, falls das Schließen verzögert wird
setTimeout(() => {
console.error('Erzwungenes Herunterfahren...');
process.exit(1);
}, 5000); // 5 Sekunden
});
Im Beispiel stoppt der Server bei Empfang des SIGTERM-Signals die Annahme neuer Verbindungen, lässt aber bestehende Verbindungen abschließen. Nach der festgelegten Zeit erfolgt ein erzwungenes Beenden, falls das Schließen zu lange dauert.