In der Firma, in der ich jetzt arbeite, gibt es einen Legacy-Dienst, dessen Init-Skript altes SysvInit verwendet, aber über systemd (CentOS 7) ausgeführt wird.
Aufgrund des hohen Rechenaufwands dauert der Abschluss dieses Dienstes ca. 70 Sekunden. Ich habe keine Zeitüberschreitung für systemd konfiguriert und die Standardkonfiguration um nicht geändert /etc/systemd/system.conf
, aber wenn ich service SERVICE stop
meinen Dienst ausführe , tritt nach 60 Sekunden eine Zeitüberschreitung auf .
Beim Überprüfen mit journalctl -b -u SERVICE.service
finde ich dieses Protokoll:
Sep 02 11:27:46 service.hostname systemd[1]: Stopping LSB: Start/Stop
Sep 02 11:28:46 service.hostname SERVICE[24151]: Stopping service: Error code: 255
Sep 02 11:28:46 service.hostname SERVICE[24151]: [FAILED]
Ich habe bereits versucht, die DefaultTimeoutStopSec
Eigenschaft auf /etc/systemd/system.conf
zu ändern 90s
, aber die Zeitüberschreitung tritt immer noch auf.
Hat jemand eine Idee, warum es bei 60s Timeout ist? Gibt es irgendwo anders, dass dieser Timeout-Wert konfiguriert ist? Kann ich das überprüfen?
Dieser Dienst wird mit Java 7 ausgeführt und verwendet JSVC , um ihn zu dämonisieren . Ich habe den -wait
Parameter mit dem Wert konfiguriert 120
.
TimeoutSec=infinity
- Wäre es nicht möglich, dass dieser einen Neustart auf unbestimmte Zeit blockiert? Was ist, wenn es "ewig" dauert, bis dieser Prozess beendet ist? Ich würde eine große Menge vorschlagen5min
, aber wahrscheinlich nichtinfinity
...systemd
Angebotssystemctl edit
(undmask
sie mit brachialer Gewalt zu deaktivieren, im Gegensatz zudisable
) für diesen Zweck. Sie sollten die Dateien in niemals bearbeiten/usr/lib/systemd
.TimeoutSec=infinity
hat hier nicht funktioniert, habe ich benutztTimeOutSec=900
(15 min) und das hat meinen posterior gerettet. - Ich musstesystemctl daemon-reload
danach ausgeführt werden, bevor der Dienst neu gestartet wurde.Beim Ausführen
systemctl show SERVICE_NAME.service -p TimeoutStopUSec
konnte ich zumindest das von systemd für meinen Dienst festgelegte Zeitlimit feststellen.Ich habe das Skript in eine reguläre Unit-Datei geändert, damit es ordnungsgemäß funktioniert.
quelle