Unser Watchdog hat die Dienste neu gestartet, die wir absichtlich gestoppt hatten

Ops

Einer unserer Watchdogs startet jeden unserer Dienste, der aktiviert, aber nicht läuft. Zweimal im Oktober hat er Dienste gestartet, die wir absichtlich gestoppt hatten. Beim zweiten Mal erhielten Besucher einer unserer Websites etwa 45 Minuten lang Fehlermeldungen.

Warum es diesen Watchdog gibt

Ein Dienst, der sauber beendet wird, wenn er SIGTERM empfängt, zum Beispiel weil ihn jemand namentlich beendet hat, gilt für systemd nicht als "fehlgeschlagen". Restart=on-failure startet ihn nicht neu, und systemctl --failed listet ihn nicht auf. Er bleibt so lange unten, bis jemand zufällig darauf aufmerksam wird. Der Watchdog sucht daher nach Diensten, die aktiviert, aber nicht laufen, und startet sie.

Das Problem ist, dass ein Dienst, den Sie manuell gestoppt haben, genau gleich aussieht.

Das erste Mal

Am 7. Oktober haben wir einen Video-Worker um 12:47 Uhr mit systemctl stop gestoppt, um seine Job-Warteschlange zu bearbeiten. Um 12:55 Uhr lief er wieder: Der Watchdog hatte ihn gestartet.

Das zweite Mal

Am 21. Oktober brauchten wir den Speicher der Maschine, die auch zwei unserer Websites bedient, für einen Modelltest. Ein Skript stoppte die Web-Apps der Websites, einen Synchronisierungsjobs und einen Datenbank-Container, wiederum mit systemctl stop. Etwa fünf Minuten später brachte ein Timer, der die Websites überwacht, und um 19:14 Uhr der Watchdog den Tunnel und die Web-Apps wieder hoch.

Der Tunnel nahm wieder Traffic an, aber die Web-Apps konnten nicht antworten: Das getestete Modell belegte 114 GiB des Speichers der Maschine. Von etwa 19:14 bis 20:00 Uhr erhielten einige Besucher 502-Fehler. Um 20:00 Uhr deaktivierten wir den Tunnel, die Web-Apps und den Synchronisierungsjobs und stoppten den Überwachungs-Timer.

Die Regel, die wir jetzt verwenden

Zwei weitere systemd-Fallen aus denselben Monaten

Factory Floor überwacht aktivierte Dienste, die nicht laufen. Standardmäßig meldet es diese nur und startet sie erst, wenn Sie dies aktivieren. Seit Version 1.0.3 enthält die Warnung auch Hinweise dazu, wie Sie einen Dienst gezielt pausieren können, und das Runbook sagt dasselbe.

Aktualisiert: