Sobes.tech
Middle+

Kunt u uitleggen wat een graceful shutdown is en waar het wordt toegepast?

sobes.tech AI

Antwoord van AI

Zachte shutdown — dit is het proces van correct afsluiten van de applicatie, waarbij het mogelijk is om lopende operaties af te ronden, resources vrij te geven en de toestand op te slaan voordat het stopt.

Toepassingen van zachte shutdown:

  • Uitrol van nieuwe versies van de applicatie: Maakt het mogelijk om soepel de oude versie te vervangen door de nieuwe zonder dataverlies of onderbrekingen in gebruikerssessies.
  • Geplande herstarts of technisch onderhoud: Zorgt ervoor dat alle openstaande verbindingen worden gesloten en taken worden voltooid voordat de service wordt gestopt.
  • Reactie op storingen of schaalvergroting: Bij vermindering van belasting of problemen kunnen services correct worden gestopt.

Voorbeeld van implementatie 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); // Simulatie van een langdurige operatie
});

server.listen(3000, () => {
  console.log('Server luistert op poort 3000');
});

// Handler voor SIGTERM signaal voor zachte shutdown
process.on('SIGTERM', () => {
  console.log('SIGTERM signaal ontvangen. Sluit server...');
  server.close(() => {
    console.log('Server gesloten. Proces wordt afgesloten.');
    process.exit(0);
  });

  // Forceren van afsluiten na enige tijd als het afsluiten vertraagt
  setTimeout(() => {
    console.error('Forceren afsluiten...');
    process.exit(1);
  }, 5000); // 5 seconden
});

In het voorbeeld stopt de server bij ontvangst van het SIGTERM-signaal met het accepteren van nieuwe verbindingen, maar laat bestaande verbindingen afmaken. Na de ingestelde tijd wordt een geforceerde afsluiting uitgevoerd als het afsluiten te lang duurt.