หวังว่าคำถามนี้จะมีคำตอบทั่วไปสำหรับ Apache และ Node.js และไม่เฉพาะเจาะจงสำหรับ Plesk (เพราะฉันรู้ว่าคุณรู้สึกอย่างไรกับคำถามเฉพาะของ Plesk!)
ฉันเพิ่งตัดสินใจเพิ่มข้อความแจ้งเตือนไปยังแอปเซิร์ฟเวอร์ Node.js เมื่อพบการอัปเดตเฉพาะ ในขณะที่ฉันทำอยู่ ฉันคิดว่ามันน่าจะเป็นความคิดที่ดีที่จะเพิ่มการแจ้งเตือนการเริ่มทำงานและปิดเซิร์ฟเวอร์ด้วย สิ่งนี้นำไปสู่การค้นพบที่ไม่พึงประสงค์บางประการ:
- ประมาณทุกๆ 24 ชั่วโมง เซิร์ฟเวอร์ของฉัน (ไม่ใช่ทั้งแพลตฟอร์มเซิร์ฟเวอร์ เพียงแค่แอปเซิร์ฟเวอร์ Node.js แอปนี้) เริ่มการทำงานใหม่โดยไม่มีเหตุผลที่ดี ระหว่างเวลา 3:30-4:30 น.
- ไม่มีการตรวจพบการปิดระบบอย่างสง่างามก่อนที่จะรีสตาร์ทแต่ละครั้ง ดังนั้นดูเหมือนว่าแอป Node.js กำลังถูกฆ่าทันที ไม่ได้ส่ง SIGINT หรือ SIGTERM ซึ่งฉันกำลังฟังอยู่
- แม้จะใช้ (ไอ) แผงควบคุมซึ่งคุณสามารถขอให้รีสตาร์ทแอปได้ การรีสตาร์ทอย่างสง่างามจะไม่เกิดขึ้น แอพ Node.js นั้นถูกฆ่าตายอย่างไม่มีพิธีรีตอง
การรีสตาร์ท 1 ครั้งต่อ 24 ชั่วโมง หลังจากการสืบสวนบางอย่าง ดูเหมือนว่าจะทริกเกอร์โดยการหมุนเวียนบันทึกของ Apache เหตุใดการหมุนเวียนบันทึกอย่างง่ายจึงควรทำให้เกิดความลึกลับอีกอย่างหนึ่งที่ต้องแก้ไข
ในระหว่างนี้ ฉันต้องการทราบว่ามีวิธีใดที่จะทำให้แน่ใจว่าการปิดระบบของ GRACEFUL เกิดขึ้น ไม่ว่าจะเกิดขึ้นเพราะ Apache กำลังหยุดหรือปิดเครื่อง หรือเพราะปุ่ม "รีสตาร์ทแอป" ถูกกด
ฉันมองหาการปิดระบบโดยการตรวจสอบสัญญาณเหล่านี้:
process.on('SIGINT', ปิดเครื่อง);
process.on('SIGTERM', ปิดเครื่อง);
process.on('SIGUSR2', ปิดเครื่อง); // ใช้โดยเครื่องมือ dev ของฉัน
มีสัญญาณอื่นที่ฉันควรตรวจสอบหรือไม่?
กระบวนการปิดอย่างไร้ความปราณีด้วย SIGKILL แทนหรือไม่?
ถ้าเป็นเช่นนั้น ฉันสามารถเปลี่ยนแปลงสิ่งนั้นได้ไหม โดยอาจมีการหน่วงเวลาเพื่อให้การปิดระบบอย่างสง่างามเกิดขึ้นสักครั้งได้ไหม