Sobes.tech
Middle+

Կարող եք բացատրել, թե ինչ է graceful shutdown-ը և որտեղ է այն կիրառվում:

sobes.tech AI

Պատասխան AI-ից

Մխիթարական անջատում (graceful shutdown) — դա ճիշտ ավարտելու գործընթացն է հավելվածի, որը թույլ է տալիս նրան ավարտել ընթացիկ գործողությունները, ազատել ռեսուրսները և պահպանել վիճակը նախքան կանգնեցնելը:

Մխիթարական անջատման կիրառումները՝

  • Նոր տարբերակների գործարկում: Դա թույլ է տալիս հարթ կերպով փոխարինել հին տարբերակը նորով՝ առանց տվյալների կորուստի կամ օգտվողների սեսիաների ընդհատման:
  • Նախապես պլանավորված վերագործարկումներ կամ տեխնիկական սպասարկում: Համոզվում է, որ բոլոր բաց կապերը փակվեն և առաջադրանքները ավարտվեն նախքան ծառայության կանգնեցումը:
  • Սխալների կամ մասշտաբավորման արձագանք: Երբ բեռը նվազում է կամ խնդիրներ առաջանում, ծառայությունները կարող են ճիշտ կերպով կանգնեցնել:

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); // Երկար գործողության սիմուլյացիա
});

server.listen(3000, () => {
  console.log('Սերվերը լսում է 3000 պորտին');
});

// SIGTERM նշանի մշակող՝ մխիթարական անջատման համար
process.on('SIGTERM', () => {
  console.log('Սիգնալ SIGTERM ստացվեց։ Փակում եմ սերվերը...');
  server.close(() => {
    console.log('Սերվերը փակվեց։ Դուրս գալ գործընթացից։');
    process.exit(0);
  });

  // Զորեղ փակել որոշ ժամանակ անց, եթե փակումը ձգձգվում է
  setTimeout(() => {
    console.error('Համառորեն փակվում է...');
    process.exit(1);
  }, 5000); // 5 վայրկյան
});

Նմուշում, SIGTERM նշան ստանալուց հետո, սերվերը դադարում է ընդունել նոր կապեր, բայց թույլ է տալիս արդեն հաստատված կապերը ավարտել։ Նշված ժամանակից հետո, եթե փակումը ձգձգվում է, տեղի է ունենում ուժեղ փակման գործընթաց։