SystemdDoctor
служба не работает сеть таймауты

Connection timed out в журнале службы

Таймаут соединения (номер 110, ETIMEDOUT) отличается от отказа: там ответ пришёл сразу, здесь ответа нет вовсе. Это характерно для правил брандмауэра с отбрасыванием пакетов, недоступных узлов и перегруженных серверов.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Пакеты отбрасываются брандмауэром

    Правило с действием drop не отвечает вовсе, и клиент ждёт до истечения таймаута. Правило с reject дало бы отказ сразу.

  2. Узел недоступен по сети

    Маршрут отсутствует, узел выключен, адрес изменился. При этом соединение тоже висит до таймаута.

  3. Сервер на другой стороне перегружен

    Очередь подключений заполнена, и новые запросы не принимаются. Внешне это выглядит как таймаут.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Быстрая проверка достижимости порта без дополнительных программ.

timeout 5 bash -c "</dev/tcp/узел/порт" && echo открыт || echo нет ответа

По какому маршруту пойдёт соединение.

ip route get адрес

Строки о таймаутах и их частота.

journalctl -u myapp.service -n 40 --no-pager | grep -i timeout

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Пакеты отбрасываются брандмауэром
Почему происходит
Правило с действием drop не отвечает вовсе, и клиент ждёт до истечения таймаута. Правило с reject дало бы отказ сразу.
Как проверить
Проверьте доступность порта и правила.
timeout 5 bash -c "</dev/tcp/узел/5432" && echo открыт || echo нет ответа
sudo nft list ruleset 2>/dev/null | head -30
Как исправить
Разрешите нужный порт для нужного источника. Если правило не ваше, выясните, где стоит промежуточный фильтр.
2. Узел недоступен по сети
Почему происходит
Маршрут отсутствует, узел выключен, адрес изменился. При этом соединение тоже висит до таймаута.
Как проверить
Проверьте доступность узла и маршрут.
ping -c3 узел
ip route get адрес
Как исправить
Исправьте адрес, маршрут или доступность узла. Само приложение тут ни при чём.
3. Сервер на другой стороне перегружен
Почему происходит
Очередь подключений заполнена, и новые запросы не принимаются. Внешне это выглядит как таймаут.
Как проверить
Посмотрите состояние соединений и нагрузку на той стороне.
ss -tan | awk "{print \$1}" | sort | uniq -c | sort -rn | head
Как исправить
Разбирайтесь с перегрузкой на стороне сервера: увеличение таймаута у клиента лишь отложит ошибку.

Пример вывода

Служба не может подключиться к внешнему сервису. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

myapp[3100]: error: dial tcp <адрес>:443: i/o timeout
myapp[3100]: retrying in 5s (attempt 3/5)
systemd[1]: myapp.service: Main process exited, code=exited, status=1/FAILURE

Связанные ошибки

Источники

  • connect(2): ошибка ETIMEDOUT документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено правилом брандмауэра с отбрасыванием пакетов.
    собственная проверка, systemd 255
    сверено 15 сентября 2026