Sperăm că această întrebare are un răspuns care este generic pentru Apache și Node.js, și nu specific pentru Plesk (pentru că știu ce părere aveți despre întrebările specifice Plesk!).
Recent am decis să adaug câteva notificări prin mesaje text la o aplicație server Node.js, pentru când a fost descoperită o anumită actualizare. În timp ce eram la asta, m-am gândit că ar fi o idee bună să adaug și notificări de pornire și oprire a serverului. Acest lucru a dus la câteva descoperiri neplăcute:
- Aproximativ la fiecare 24 de ore serverul meu (nu întreaga platformă de server, doar această aplicație de server Node.js) se repornea fără un motiv întemeiat, între 3:30-4:30 AM.
- Nu a existat o detectare grațioasă a unei închideri înainte de fiecare repornire, așa că se pare că aplicația Node.js a fost eliminată definitiv, nu a fost trimisă SIGINT sau SIGTERM, pe care le ascultam.
- Chiar și folosind (tuse), unde puteți solicita o repornire a aplicației, nu are loc o repornire grațioasă. Aplicația Node.js este pur și simplu ucisă fără ceremonie.
Repornirea o dată pe 24 de ore, după unele investigații, este aparent declanșată de rotația jurnalelor Apache. De ce simpla rotație a jurnalelor ar trebui să provoace acest lucru este un alt mister care trebuie rezolvat.
Între timp, vreau să știu dacă există o modalitate de a mă asigura că închiderile GRACEFUL au loc, dacă se întâmplă deoarece Apache se oprește sau se închide sau pentru că este apăsat butonul „Repornire aplicație”.
Caut opriri prin monitorizarea acestor semnale:
process.on('SIGINT', oprire);
process.on('SIGTERM', oprire);
process.on('SIGUSR2', oprire); // Folosit de instrumentele mele de dezvoltare
Există un alt semnal pe care ar trebui să-l verific?
Procesul se închide fără milă cu un SIGKILL în schimb?
Dacă da, pot schimba asta, poate cu un fel de întârziere pentru a oferi o oprire grațioasă să aibă loc?