labctl
войти регистрация

Починить упавший сервис под supervisord

имя
supervisord-down
образ
python:3.12-slim
таймаут
60с
проверка…

Задание

Починить упавший сервис под supervisord

Микросервис app должен слушать на порту 8080, но он не поднимается.
Контейнер управляется через supervisord. Разберитесь, почему сервис падает,
починьте конфиг и перезапустите его так, чтобы он стабильно отвечал на порту.

Симптомы

$ supervisorctl status
app     FATAL     Exited too quickly (process log may have details)

$ supervisorctl tail -20000 app stderr
... (подсказка здесь, но не прямое решение)

$ curl -fsS http://127.0.0.1:8080/health
curl: (7) Failed to connect to 127.0.0.1 port 8080

Что нужно

curl http://127.0.0.1:8080/health возвращает ok (HTTP 200).

Чего НЕ нужно трогать

  • Не правьте сам /app/server.py — он корректен. Поломка в конфигурации
    запуска
    , а не в коде сервиса.

Почему это hard

Причина падения не очевидна из симптома — нужно прочитать логи, понять
файловую структуру, проверить пути в конфиге и права на них. Один
supervisorctl restart app не поможет, пока корневая причина не устранена.
Часто на собеседованиях отличают тех, кто умеет читать ошибку, от тех, кто
просто перезапускает.

Подсказки

Hints: supervisord-down

  • supervisorctl status — какой статус у программы? FATAL = падает при старте.
  • supervisorctl tail -20000 app stderr — текст последней ошибки. Это главный источник правды.
  • Прочитайте /etc/supervisor/conf.d/app.conf строку за строкой. Любой путь в нём должен существовать, а user= должен иметь права на чтение command.
  • Файл лога в конфиге ссылается на каталог — кто его создаст, и у кого есть права туда писать?
  • После правки конфига: supervisorctl reread && supervisorctl update && supervisorctl restart app.
  • Проверка: curl -i http://127.0.0.1:8080/health должно дать 200 ok.
  • Если страшно трогать код сервиса — не трогайте, он корректен. Поломка в конфигурации запуска.

Последние попытки

  • Загрузка…

Разовый запуск (smoke-тест)

Атомарный цикл up → check → down. Полезно для CI; без предварительной подготовки состояния проверка завершится с ошибкой.