передатчик-демон истекает во времени при запуске systemd

Вопрос или проблема

Я запускал transmission-daemon без проблем в течение нескольких недель после настройки нового VPS, работающего на Ubuntu 24.04.1. В течение последних 24 часов я заметил, что сервис больше не отвечает. Когда я проверил journalctl, он сообщил, что сервис не был запущен из-за таймаута.

× transmission-daemon.service - Демон BitTorrent Transmission
     Loaded: загружен (/usr/lib/systemd/system/transmission-daemon.service; включен; предустановка: включена)
     Active: неудача (Результат: таймаут) с вс 2024-09-22 23:46:37 MDT; 3мин 51с назад
    Process: 2621 ExecStart=/usr/bin/transmission-daemon -f --log-level=error (код: завершен, статус: 0/УСПЕХ)
   Main PID: 2621 (код: завершен, статус: 0/УСПЕХ)
        CPU: 374мс

22 сен 23:45:07 arrakis.hrethgir.org systemd[1]: Запуск transmission-daemon.service - Демен BitTorrent Transmission...
22 сен 23:46:37 arrakis.hrethgir.org systemd[1]: transmission-daemon.service: операция запуска превысила время ожидания. Завершение.
22 сен 23:46:37 arrakis.hrethgir.org transmission-daemon[2621]: Закрытие сессии transmission... готово.
22 сен 23:46:37 arrakis.hrethgir.org systemd[1]: transmission-daemon.service: Неудача с результатом 'таймаут'.
22 сен 23:46:37 arrakis.hrethgir.org systemd[1]: Не удалось запустить transmission-daemon.service - Демон BitTorrent Transmission.

Вот содержимое /usr/lib/system/system/transmission-daemon.service:

[Unit]
Description=Демон BitTorrent Transmission
Wants=network-online.target
After=network-online.target

[Service]
User=debian-transmission
Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-level=error
ExecReload=/bin/kill -s HUP $MAINPID
NoNewPrivileges=true
MemoryDenyWriteExecute=true
ProtectSystem=true
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Если я запускаю transmission-daemon из командной строки с теми же параметрами, он работает нормально.

sudo -u debian-transmission /usr/bin/transmission-daemon -f --log-level=error

Я знаю, что конфигурационный файл работает, потому что когда я запускаю демон вручную, я могу подключиться к нему, добавлять и управлять торрентами. Но попытка запустить его через systemd терпит неудачу. Есть идеи?

Я получаю такую же ситуацию на архитектуре RiscV на visionfive2. Предположил, что это что-то специфическое для Riscv, но похоже, что нет.

Я также заметил, что во время таймаута systemd я мог перейти на localhost:9091 и увидеть веб-страницу, а также получить список (пустой) торрентом с помощью transmission-remote.

Я изменил .service файл с ‘Type=notify’ на ‘Type=exec’, и похоже, что он функционирует правильно. (Думаю, отсутствует что-то, что делает sd-notify).

Существует ли флаг компиляции для включения уведомлений для systemd, возможно отсутствующий?

Ответ или решение

Проблема с тайм-аутом, возникающая при запуске transmission-daemon через systemd, может быть связана с тем, как служба уведомляет systemd о своем состоянии. В вашем случае, если при запуске через командную строку служба работает нормально, это означает, что, скорее всего, проблема кроется в настройках systemd.

Основные шаги для решения проблемы:

  1. Изменение типа службы:
    Ваша служба настроена на использование Type=notify, что подразумевает, что программа должна отправлять уведомления о своем статусе через sd_notify(). Однако, если transmission-daemon не реализует такое уведомление, это может привести к тайм-аутам. Вы можете изменить Type на Type=simple или Type=exec, как вы уже сделали, что должно решить проблему:

    [Service]
    Type=simple
    ExecStart=/usr/bin/transmission-daemon -f --log-level=error
  2. Проверка конфигурации:
    Убедитесь, что ваша конфигурация transmission-daemon корректна и не вызывает задержек при запуске. Вы можете проверить файл конфигурации, находящийся по адресу /etc/transmission-daemon/settings.json, и удостовериться, что параметры не конфликтуют.

  3. Логи и отладка:
    Просмотрите логи с помощью команды journalctl -u transmission-daemon.service, чтобы увидеть дополнительные сообщения об ошибках или предупреждениях, которые могут помочь в диагностике проблемы.

  4. Права доступа:
    Убедитесь, что пользователь debian-transmission имеет нужные права на директории загрузки и файлы конфигурации. Если права доступа установлены неправильно, это может вызвать длительную загрузку или тайм-аут.

  5. Сетевые настройки:
    Поскольку transmission-daemon использует сетевые порты, убедитесь, что нужные порты открыты и не блокируются брандмауэром (например, UFW или iptables).

  6. Параметры контроля тайм-аутов:
    Если проблема все еще сохраняется, вы можете увеличить значения параметров тайм-аутов в блоке [Service], добавив:

    TimeoutStartSec=300

    Это позволит службе больше времени для завершения запуска, прежде чем systemd решит, что произошел тайм-аут.

Заключение

Изменение типа на Type=simple или использование Type=exec обычно решает проблему с тайм-аутом. Однако, внимательно проверьте логи и конфигурацию, чтобы убедиться, что других проблем нет. Если вы хотите, чтобы transmission-daemon работал с Type=notify, потребуется убедиться, что он поддерживает уведомления, что может зависеть от версии или сборки. Если у вас есть доступ к исходному коду, вы можете посмотреть, включена ли эта функциональность при компиляции.

Оцените материал
Добавить комментарий

Капча загружается...