Konuyu Açan
#1
Bir Node.js servisini yeniden başlatırken yalnızca
Önce yeni trafiği durdurun. SIGTERM alınca uygulamanın “hazır” durumunu kapatıp readiness kontrolüne 503 döndürün. Bu değişikliğin yük dengeleyiciye yansıması anlık olmayabilir; kısa bir bekleme süresi, yeni isteklerin eski sürece yönelmesini azaltabilir.
Sonra HTTP sunucusunu kapatın.
Buradaki
Siz servislerinizde kapanış sinyalini nasıl ele alıyorsunuz; WebSocket bağlantıları veya kuyruk tüketicileri için ayrıca nasıl bir sıra izliyorsunuz?
process.exit() çağırmak, tam o sırada işlenen istekleri yarıda kesebiliyor. Özellikle konteyner veya süreç yöneticisi kullanan projelerde, kapanışı birkaç aşamaya bölmek daha güvenli.server.close() yeni bağlantıları kabul etmeyi bırakır ve devam eden isteklerin tamamlanmasını bekler. Kapanış sırasında veritabanı havuzunu veya mesaj kuyruğu istemcisini hemen kapatmayın; çalışan isteklerin bu kaynaklara hâlâ ihtiyacı olabilir.KOD
1234567891011
let shuttingDown = false;
process.on('SIGTERM', () => {
shuttingDown = true;
server.close(async () => {
await db.end();
process.exit(0);
});
});
Buradaki
shuttingDown değerini readiness endpoint’inde kullanabilirsiniz. Gerçek uygulamada kapanış için bir zaman aşımı da belirlemek iyi olur; aksi hâlde bitmeyen bir istek süreci açık tutabilir. Zaman aşımı dolarsa zorla kapatmak, temiz kapanıştan daha sert ama bazen gerekli bir seçenek.Siz servislerinizde kapanış sinyalini nasıl ele alıyorsunuz; WebSocket bağlantıları veya kuyruk tüketicileri için ayrıca nasıl bir sıra izliyorsunuz?