Sobes.tech
Middle+

Kas on graceful shutdown ja kus seda rakendatakse?

sobes.tech AI

Vastus AI-lt

Graatsiline sulgemine on protsess, mis võimaldab rakendusel korrektselt lõpetada oma töö, lõpetades enne peatamist praegused toimingud, vabastades ressursid ja säilitades oleku.

Graatsilise sulgemise rakendamine:

  • Uute rakenduse versioonide juurutamine: võimaldab sujuvalt asendada vana versiooni uuega ilma andmete kaota või kasutajate seansse katkestamata.
  • Tööplaanilised taaskäivitused või hooldus: tagab, et kõik avatud ühendused suletakse ja ülesanded lõpetatakse enne teenuse peatamist.
  • Vastamine rikete või skaleerimise korral: teenused võivad olla korrektselt peatatud, kui koormus väheneb või tekib probleem.

Näide Node.js-is:

// 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); // Pikaajalise operatsiooni imitatsioon
});

server.listen(3000, () => {
  console.log('Server kuulab pordil 3000');
});

// SIGTERM signaali töötleja graatsiliseks sulgemiseks
process.on('SIGTERM', () => {
  console.log('Saadud SIGTERM signaal. Sulge server...');
  server.close(() => {
    console.log('Server suletud. Välju protsess.');
    process.exit(0);
  });

  // Suntsiv lõpetamine teatud aja pärast, kui sulgemine venib
  setTimeout(() => {
    console.error('Suntsiv sulgemine...');
    process.exit(1);
  }, 5000); // 5 sekundit lõpetamiseks
});

Näites, kui saadakse SIGTERM signaal, lõpetab server uute ühenduste vastuvõtmise, kuid võimaldab juba olemasolevatel ühendustel lõpetada. Määratud aja pärast toimub sunniviisiline protsessi lõpetamine, kui sulgemine venib.