Сокращение времени ожидания для «остановки работы»

16

У меня есть node.js и pm2, установленные на Pi (Raspbian). PM2 был настроен для запуска через pm2 startupи сценарии инициализации, которые он создает. Иногда при перезагрузке выключение на несколько минут зависает:

A stop job is running for LSB: PM2 init script (... / 5min)

Каждый раз в то время как 1 , что я предполагаю , что это PM2 не закрыта должным образом и зависания в течение полных 5 минут.

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

Мой вопрос: как мне сократить время ожидания с 5 минут, скажем, до 15 секунд или около того? Где это настроено?

Я прочитал на форуме, что это был DefaultTimeoutStopSecключ в /etc/systemd/system.conf , поэтому я попытался установить его в «15s», но это не имело никакого эффекта. Я тоже попробовал то же самое в /etc/systemd/user.conf , но без изменений. Время ожидания все еще установлено на 5 минут.


1 Я действительно знаю, что именно это вызывает, но детали не важны, и эффект неизбежен.

Джейсон С
источник
1
Если есть stopсценарий (по умолчанию) , вы можете переписать его, чтобы выполнить forcestopили даже убить pm2вместо постепенного завершения работы.
Тигр
@Tigger Я пришел к аналогичному выводу, на самом деле. Из-за отчаяния я только что заставил stopв скрипте инициализации pm2 вообще ничего не делать и позволить ему умереть естественным образом при завершении работы. Это ужасное решение для общего пользования, но в этой конкретной системе это нормально. Я все еще хочу знать, как изменить 5-минутный тайм-аут, хотя.
Джейсон С

Ответы:

8

Как сократить время ожидания с 5 минут, скажем, до 15 секунд или около того?

Вы перестраиваете systemd из исходного кода, исправляя аппаратный таймаутsystemv-sysv-generator из того, TimeoutSec=5minчто вам нужно. Или вы спрашиваете systemd о ручке управления где-нибудь в заголовках Fedora / SUSE или LSB.

Или, с другой стороны, вы отказываетесь от использования этого rcсценария, который у вас есть, и пишете сервисный модуль systemd для своей службы, время ожидания которого вы можете установить с явным TimeoutSec=параметром, установленным с помощью файла настроек в /etc/systemd/system/pm2.service.d/timeout.confслучае необходимости.

Учитывая это , это , это , это , это , и другие, первое правило для перехода на Systemd применяется здесь.

дальнейшее чтение

JdeBP
источник
15

/etc/systemd/system.conf имеет линию

#DefaultTimeoutStopSec=90s

которые можно раскомментировать и изменить

Вольфганг Фаль
источник
Я упоминал об этом в своем посте, и это изменение не имеет никакого эффекта.
Джейсон C
установка 45 сессий в Arch Linux делает быстрое отключение на nvmeдиске - для действительно быстрых отключений используйте Alpine Linux (нет systemd)
Stuart Cardall