watchdog: pi is going down!

  • Hallo,

    mein RasPi läuft seit längerer Zeit sehr stabil. Heute Morgen hat er mich jedoch mit einer E-Mail wie folgt begrüßt:

    Wie kann ich rausfinden warum der watchdog einen reboot ausgelöst hat, warum er 'load average too high' hat, was ist Schuld?

  • ..., warum er 'load average too high' hat, was ist Schuld?

    Welche "maximal allowed load average" hast Du in der config-Datei des watchdog eingetragen und warum?

    Ich es nicht so, dass diese Prüfung, per default deaktiviert ist, oder?

    EDIT:

    Code
    Default value is 0. That means the load average check is disabled. Be careful not to set this parameter too low.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Die /etc/watchdog.conf meines pi ist:

  • Die /etc/watchdog.conf meines pi ist:

    Code
    # Uncomment to enable test. Setting one of these values to '0' disables it.
    # These values will hopefully never reboot your machine during normal use
    # (if your machine is really hung, the loadavg will go much higher than 25)
    #max-load-1        = 24
    max-load-5        = 18
    #max-load-15        = 12

    BTW: Mit

    Code
    uptime

    in der Kommandozeile, bekommst Du den load average nach 1, 5 und 15 Minuten. Von wo hast Du die 18 bzw. nach welchen Kriterien hast Du das dort so eingetragen?

    EDIT:

    BTW: Im Internet findest Du detaillierte/genaue Informationen zum "load average". U. a. z. b. in:

    https://www.site24x7.com/blog/load-aver…r-linux-servers

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • im Moment:

    15:38:28 up 17:39, 1 user, load average: 0,00, 0,01, 0,06

    Die /etc/watchdog.conf auf meinem pi ist vom Juli 2018. Leider weiß ich heute nicht mehr, warum ich die 'max-load-5 = 18' damals eingetragen habe. Vermutlich geschätzter Wert für 'Overload'.

    Normalerweise dümpelt der pi unter 1, so dass ich 18 schon sehr hoch finde für das 5 Minuten-Mittel.

    Aber, wie kann ich die Ursache finden?

  • Aber, wie kann ich die Ursache finden?

    Schau mal nach ob Du auf dem PI, evtl. Prozesse im "uninterruptible sleep"-Zustand (D) hast:

    Code
    ps -aN --format user,pid,stat,cmd

    Wie sind auf deinem PI die Ausgaben von:

    Code
    top -n 1
    free -m

    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Code
    free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3787         285        1037          38        2463        3306
    Swap:          1023           1        1022
  • Code
    top -n 1
    top - 17:04:42 up 19:06,  1 user,  load average: 0,01, 0,05, 0,01
    Tasks: 185 total,   1 running, 184 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1,2 us,  6,0 sy,  0,0 ni, 92,8 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
    MiB Mem :   3787,2 total,   1037,5 free,    285,7 used,   2463,9 buff/cache
    MiB Swap:   1024,0 total,   1023,0 free,      1,0 used.   3306,2 avail Mem

    Reduziere mal die swappiness auf 2:

    Code
    sudo sysctl -w vm.swappiness=2

    und ergänze die /etc/sysctl.conf mit der Zeile:

    Code
    vm.swappiness = 2

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Die swappiness ist im Moment 60:

    Code
    cat /proc/sys/vm/swappiness
    60

    Ich habe das mal gegoogle. Ist wohl der Standardwert

    Zitat

    Der Wert kann zwischen 10 und 100 festgelegt sein.

    Höher bedeutet, unbenutzter Speicher wird schneller ausgelagert.

    Linux-Distributionen arbeiten meist mit einem Standardwert von 60. Dies ist eine gute Balance für verbreitete Systeme, egal ob Server oder Desktop, mit mechanischer Festplatte.

    Wie und warum kommst Du auf 2?

    Wie kann ich die Ursache finden? Gibt es keine Logs oder ähnliches von gestern, wo ich nachschauen könnte, was die hohe CPU-Last zum Auslösen des Watchdogs erzeugt hat?

  • Wie und warum kommst Du auf 2?

    Damit nicht (unnötig) geswappt wird, wenn noch genug RAM vorhanden ist.

    BTW: Alle meine Systeme haben entweder eine swappiness von 2 oder _gar kein_ swap-Speicher aktiviert/konfiguriert. Z. B.:

    Code
    :~ $ free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3660          84        2862           0         714        3106
    Swap:             0           0           0

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Aber, wenn die Auslastung hoch geht, ggf. auch weil der (RAM-)Speicher gerade knapp bzw. voll ist, wäre es nicht sinnvoll gerade dann SWAP zu nutzen?

    Ja, und mit einer swappiness von 2 wird der SWAP ja auch genutzt, aber nur dann wenn auch erforderlich.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Wie kann ich die Ursache näher einkreisen?

    Du könntest Dienste die Du auf dem PI nicht zwingend brauchst, temporär deaktivieren.

    Du kannst auch die Ressourcen für bestimmte/einzelne "verdächtige bzw. in Frage kommende" Dienste temporär oder permanent limitieren/verändern/anpassen. Siehe z. B. die default Einstellung:

    Code
    systemctl show --property DefaultTasksMax
    systemctl show --property DefaultLimitCPU

    und zum evtl. ändern/anpassen

    Code
    systemctl set-property <service-unit>.service TaskMax=<Wert>
    systemctl set-property <service-unit>.service LimitCPU=<Wert>
    systemctl set-property <service-unit>.service MemoryMax=<Wert>
    systemctl set-property <service-unit>.service CPUQuota=<Wert>

    Aber nur dann wenn Du weißt was Du tust bzw. was das bewirkt.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p6 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Danke für Deine Hilfe.

    Jedoch, schlägt der Watchdog nicht stündlich, täglich, ... o.ä. zu, sondern es war überraschend. Wie gesagt, läuft der Pi mit der selben Konfiguration seit längerem stabil.

    Um "verdächtige bzw. in Frage kommende" Dienste temporär zu beeinflussen müsste ich ja erst einmal verdächtige identifizieren.

    Zunächst einmal gehe ich davon aus, dass der Watchdog im weiteren nicht regelmäßig zuschlägt. Vielleicht hat im Pi-System auch nur ein zufälliger "Furz quer gelegen" und es ist daher zu einer Überlastung gekommen.

    Gibt es eine Watchdog-Einstellung, so dass der Watchdog kurz vorm Reboot noch ein Snapshot ähnlich "top -n 1" macht um zu sehen, welcher Dienst die Überlastung provoziert?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!