Вступить в клуб →
сложнаявопросПотоки, память и производительность процесса

При деплое процесс не завершается по 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 нельзя вызывать внутри обработчика сигнала

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела