#Когда возникает ошибка в Debian и какие условия важны
Systemd в Debian сообщает active (running), но веб-приложение или другая служба не отвечает клиенту. Systemd отслеживает процесс, а не гарантию того, что он слушает нужный порт, завершил инициализацию и выполняет запросы.
#Причины и как отличить их друг от друга
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Процесс слушает неверный адрес или порт | ss показывает localhost вместо внешнего адреса либо порт другой. | Сверить конфигурацию приложения и обратного прокси. |
| Зависимость приложения недоступна | В журнале есть ошибка подключения к БД или очереди, хотя процесс активен. | Проверить конкретную зависимость и её доступ. |
| Запрос блокируется между клиентом и сервисом | Локальный curl успешен, а внешний запрос не проходит. | Разобрать DNS, маршруты, firewall и reverse proxy отдельно. |
#Пошаговая диагностика и устранение
- 1. Зафиксируйте, какой ответ считается правильнымОткройте терминал Debian на сервере, запишите реальный адрес приложения и проверочный URL, который не меняет данные. Выполните systemctl status и show для нужной службы. У Type=simple активное состояние означает запуск процесса, но не прохождение внутренней проверки работоспособности.Linux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
systemctl status ИМЯ.service --no-pagersystemctl show ИМЯ.service -p Type -p MainPID -p ExecStart
- 2. Найдите адрес прослушивания и владельца портаС правами администратора выполните ss -ltnp; для UNIX-сокетов дополнительно ss -xlpn. Найдите ожидаемый порт и процесс. Слушание 127.0.0.1 корректно при nginx или другом обратном прокси, но не обеспечивает прямой доступ извне; не меняйте bind на 0.0.0.0 автоматически.
- Команды только читают открытые порты и сокетыLinux · Терминал (Bash)КомандаНужен sudoКоманды только читают открытые порты и сокеты.
sudo ss -ltnpsudo ss -xlpn
- 3. Проверьте приложение локальным запросом без побочных действийДля HTTP укажите реальный порт и безопасный GET-путь, например документированный health-endpoint. Примерные заполнители ПОРТ и ПУТЬ нужно заменить. Код 404 может означать неверный путь, а 200 с JSON-ошибкой — неуспешную работу; оценивайте содержимое ответа и время.
- Чтение данных и диагностикаLinux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
curl -v --max-time 10 http://127.0.0.1:ПОРТ/ПУТЬ
- 4. Сопоставьте ошибку с журналом в момент обращенияСразу после пробного запроса выполните journalctl для приложения. Ищите ошибки базы данных, отсутствующего файла, переполнения очереди, сертификата или нехватки памяти. Не публикуйте логи целиком: в них могут быть персональные данные, заголовки авторизации и токены.Linux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
journalctl -u ИМЯ.service -b --no-pager -n 120systemctl --failed --no-pager
- 5. Проверьте зависимости и загрузку ресурсовЕсли программа отвечает медленно, проверьте память и использование диска; нехватка свободного пространства у /var может блокировать запись логов и сессий. При недоступной БД отдельно проверьте её службу или удалённый адрес; не запускайте массовую очистку диска и не перезапускайте все сервисы сразу.
- Чтение данных и диагностикаLinux · Терминал (Bash)КомандаЧтение данных и диагностика. Изменений нет.
free -hdf -hTsystemctl show ИМЯ.service -p MemoryCurrent -p TasksCurrent
- 6. Разделите локальную и внешнюю сетевую неисправностьЕсли локальный curl отвечает, проверьте с клиента DNS, адрес сервера и доступность через прокси. На Debian сетевые правила могут контролироваться nftables, ufw, панелью хостинга и облачным межсетевым экраном. Не отключайте брандмауэр ради теста и не открывайте порт публично без назначения.
- Если nft не установлен, смотрите реальный способ управления firewallLinux · Терминал (Bash)КомандаНужен sudoЕсли nft не установлен, смотрите реальный способ управления firewall.
ip -br addressip routesudo nft list ruleset
- 7. Измените найденную причину и проверьте конечную функциюИсправляйте только доказанный параметр приложения, обратного прокси или зависимости, после штатной проверки синтаксиса. Запланированный перезапуск затрагивает пользователей, поэтому не выполняйте его без необходимости. Повторите локальный и внешний запросы и убедитесь, что приложение возвращает нужные данные, а не только HTTP-статус 200.
- Итоговые команды диагностические, не меняют работающие процессыLinux · Терминал (Bash)КомандаНужен sudoИтоговые команды диагностические, не меняют работающие процессы.
systemctl status ИМЯ.service --no-pagersudo ss -ltnp
#Проверка результата и действия при неуспехе
Неисправность устранена, когда приложение отвечает по запланированному URL из реальной клиентской сети, выполняет требуемую операцию и не сообщает ошибок зависимостей.