При деплое процесс не завершается по SIGTERM и убивается через 30 секунд
process.on('SIGTERM', () => {
server.close(() => {
db.end().then(() => process.exit(0));
});
});
Новых запросов при остановке не приходит, но колбэк server.close не вызывается, и через 30 секунд Kubernetes убивает процесс сигналом KILL. Клиенты — фронтенд и шлюз — используют keep-alive. Что мешает завершению?
- close ждёт закрытия всех соединений, а keep-alive-соединения остаются открытыми
- Сигнал SIGTERM не доходит до процесса Node.js в контейнере
- db.end() блокирует event loop и не даёт вызвать колбэк
- server.close нельзя вызывать внутри обработчика сигнала
