>_ IzzyLab

Практическое задание

Сервис висит без ответа

средне

На порту 7070 висит сервис, но curl к нему зависает — процесс живой, но не отвечает (deadlock). Найди и перезапусти его из /opt/hang/start.sh, чтобы http://localhost:7070/ начал отвечать.

Что потренируешь:
  • процессы
  • дедлок
  • ss
  • сигналы
  • перезапуск демона

Разбор темы

«Процесс живой, но не отвечает» — это не падение, а зависание: дедлок или бесконечное ожидание внутри, при котором сокет продолжает слушать порт, но запросы не обрабатываются. Поэтому pgrep/ps покажут процесс в полном порядке — диагностировать надо не «жив ли он», а «завис ли»: запрос виснет по таймауту (а не рвётся с connection refused, как было бы, если бы порт вообще никто не слушал), а состояние процесса в ps отличается от нормального S/R. Найти держателя порта помогает ss -tlnp. Важный нюанс: застрявший на блокировке процесс может не обработать мягкий SIGTERM, так что будь готов эскалировать до принудительного убийства, а новый экземпляр поднять отвязанным от текущей сессии.

Что проверяется

  1. Сервис снова отвечает

Как это выглядит