Hy vọng rằng câu hỏi này có câu trả lời chung cho Apache và Node.js, và không dành riêng cho Plesk (vì tôi biết bạn cảm thấy thế nào về các câu hỏi dành riêng cho Plesk!).
Gần đây, tôi đã quyết định thêm một số thông báo bằng tin nhắn văn bản vào ứng dụng máy chủ Node.js, khi một bản cập nhật cụ thể được phát hiện. Trong khi tôi đang ở đó, tôi nghĩ rằng cũng nên thêm thông báo khởi động và tắt máy chủ. Điều này dẫn đến một vài khám phá khó chịu:
- Khoảng 24 giờ một lần, máy chủ của tôi (không phải toàn bộ nền tảng máy chủ, chỉ một ứng dụng máy chủ Node.js này) lại khởi động lại mà không có lý do chính đáng, trong khoảng thời gian từ 3:30-4:30 sáng.
- Không có phát hiện tắt máy trước mỗi lần khởi động lại, vì vậy có vẻ như ứng dụng Node.js đã bị tắt hoàn toàn, không được gửi SIGINT hoặc SIGTERM mà tôi đang lắng nghe.
- Ngay cả khi sử dụng (ho) bảng điều khiển, nơi bạn có thể yêu cầu khởi động lại ứng dụng, quá trình khởi động lại chậm sẽ không xảy ra. Ứng dụng Node.js bị giết một cách đơn giản.
Việc khởi động lại một lần trong 24 giờ, sau một số cuộc điều tra, dường như được kích hoạt bởi vòng quay nhật ký Apache. Tại sao việc quay nhật ký đơn giản lại gây ra điều này là một bí ẩn khác cần được giải đáp.
Trong thời gian chờ đợi, tôi muốn biết liệu có cách nào để đảm bảo việc tắt máy DỄ DÀNG xảy ra hay không, cho dù chúng xảy ra do Apache đang dừng hoặc tắt hay do nút "Khởi động lại ứng dụng" được nhấn.
Tôi tìm kiếm sự tắt máy bằng cách theo dõi các tín hiệu sau:
process.on('SIGINT', tắt máy);
process.on('SIGTERM', tắt máy);
process.on('SIGUSR2', tắt máy); // Được sử dụng bởi các công cụ dev của tôi
Có một tín hiệu khác tôi nên kiểm tra?
Thay vào đó, quá trình có bị tắt không thương tiếc bằng SIGKILL không?
Nếu vậy, tôi có thể thay đổi điều đó không, có lẽ với một số loại chậm trễ để tắt máy một cách duyên dáng trong một thời gian?