So sieht die Meldung aus
myapp.service: Start request repeated too quickly.
myapp.service: Failed with result 'start-limit-hit'.
Failed to start myapp.service - My application.Häufige Ursachen
- Das Programm beendet sich direkt nach dem Start: falsche Konfiguration, fehlende Datei, Rechteproblem oder ein schon belegter Port.
Restart=alwaysmit sehr kurzemRestartSecstartet einen kaputten Dienst zu oft neu.- Eine Abhängigkeit (Datenbank, Mount, Netzwerk) ist noch nicht bereit.
- Mehr als 5 Starts in 10 Sekunden, die Standardwerte von
StartLimitBurstundStartLimitIntervalSec. - Ein fehlerhaftes Update hat eine Binärdatei oder Konfiguration verändert.
Prüfen
- Zustand und letzte Zeilen der Unit
systemctl status myapp --no-pager - Warum ist sie abgestürzt? Das Journal der Unit lesen
- Die für diese Unit geltenden Limits
systemctl show myapp -p Restart -p RestartUSec -p StartLimitBurst -p StartLimitIntervalUSec
Lösung
- Zuerst den echten Fehler im Journal finden und beheben (Konfiguration, Rechte, Port, Abhängigkeit).
- Den Fehlerzustand löschen:
systemctl reset-failed myapp, dannsystemctl start myapp. - Dem Dienst Luft geben:
RestartSec=5in[Service]und bei BedarfStartLimitIntervalSec=60sowieStartLimitBurst=5in[Unit]. After=undRequires=für Abhängigkeiten ergänzen, die zuerst bereit sein müssen.- Nach dem Bearbeiten der Unit-Datei
systemctl daemon-reloadausführen.
Häufige Fragen
Kann ich das Startlimit einfach erhöhen?
Man kann, aber es verdeckt nur eine Absturzschleife. Zuerst klären, warum der Prozess endet. Das Limit nur für einen Dienst erhöhen, der bewusst oft neu starten soll.
Wie sehe ich alle fehlgeschlagenen Units?
Mit systemctl --failed.