Réduction du délai d'arrêt pour «un travail d'arrêt est en cours d'exécution»

16

J'ai node.js et pm2 installés sur un Pi (Raspbian). PM2 a été configuré pour démarrer via pm2 startupet les scripts d'initialisation qu'il crée. Parfois, lorsque je redémarre, l'arrêt se bloque pendant quelques minutes sur:

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

De temps en temps 1, je suppose que PM2 ne s'arrête pas correctement et se bloque pendant les 5 minutes complètes.

Sur ce système, je sais exactement quelles applications PM2 gère et je me fiche vraiment qu'elles s'arrêtent correctement.

Ma question est: comment puis-je réduire le délai d'attente de 5 minutes à, disons, 15 secondes environ? Où est-ce configuré?

J'ai lu sur un forum que c'était la DefaultTimeoutStopSecclé dans /etc/systemd/system.conf , j'ai donc essayé de le régler sur "15s" mais cela n'a eu aucun effet. J'ai également essayé la même chose dans /etc/systemd/user.conf , mais aucun changement. Le délai est toujours réglé sur 5 minutes.


1 En fait, je sais précisément ce qui déclenche cela, mais les détails ne sont pas importants et l'effet est inévitable.

Jason C
la source
1
S'il existe un stopscript (par défaut) , vous pouvez le réécrire pour effectuer un forcestopou même pour tuer pm2au lieu d'un arrêt gracieux.
Tigger
@Tigger Je suis arrivé à une conclusion similaire, en fait. Par désespoir, je viens de faire stopdans le script d'init de pm2 ne rien faire du tout, et le laisser mourir naturellement à l'arrêt. C'est une solution terrible pour une utilisation générale, mais sur ce système particulier, c'est bien. Je veux quand même savoir comment changer le délai d'expiration de 5 minutes.
Jason C

Réponses:

8

Comment puis-je réduire le délai d'attente de 5 minutes à, disons, 15 secondes environ?

Vous reconstruisez systemd à partir de la source, corrigeant le délai d'attente câblésystemv-sysv-generator de TimeoutSec=5mince que vous voulez. Ou vous demandez aux gens de systemd un bouton de commande quelque part dans les en-têtes Fedora / SUSE ou LSB.

Ou, d'une part, vous abandonnez l'utilisation de ce rcscript que vous avez et écrivez une unité de service systemd pour votre service, dont vous pouvez définir des délais d'expiration avec un TimeoutSec=paramètre explicite , installé avec un fichier de paramètres d'installation /etc/systemd/system/pm2.service.d/timeout.confsi nécessaire.

Compte tenu de ceci , ceci , ceci , ceci , ceci et d'autres, la première règle de migration vers systemd s'applique également ici.

Lectures complémentaires

JdeBP
la source
15

/etc/systemd/system.conf a une ligne

#DefaultTimeoutStopSec=90s

qui peut être non commenté et modifié

Wolfgang Fahl
la source
Je l'ai mentionné dans mon message et que le changer n'a aucun effet.
Jason C
la définition de 45s dans Arch Linux rend les arrêts rapides sur un nvmelecteur - pour des arrêts vraiment rapides, utilisez Alpine Linux (non systemd)
Stuart Cardall