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 სიგნალი, სერვერი შეწყვეტს ახალი კავშირების მიღებას, მაგრამ საშუალებას აძლევს არსებულ კავშირებს დასრულდეს. განსაზღვრული დროის შემდეგ, თუ დახურვა გადადიან, ხდება ძალით დახურვა.