Pi hängt sich nach ein paar Stunden auf

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo,

    ich habe auf meinem RPi ein Python Script installiert welches ich automatisch nach dem Start starten lasse. Das ganze funktioniert so wie es soll.
    Es liest meinen Stromzähler über die serielle Schnittstelle aus, verarbeitet die Daten und sendet diese per UDP an meine SPS.

    Seit dem ich das Script aufgespielt habe hängt sich der RPi aber nach 3-6 Stunden auf.
    Muss ich evtl. irgendwelche Speicher oder dergleichen freigeben?
    Bin leider generell kein IT-Profi und dies ist mein erstes Prog mit Python, daher stehe ich ein wenig auf dem Schlauch.

    Hier mal der Code:

    Wäre für jede Hilfe dankbar.

    Gruß Iksi

    Einmal editiert, zuletzt von Iksi (17. August 2014 um 12:36)


  • ... hängt sich der RPi aber nach 3-6 Stunden auf.


    Wie bekommst Du deinen Pi, nach dem "Aufhängen" wieder funktionsfähig?

    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-p3 (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

  • Strom aus und wieder an. Dann läuft alles wieder.
    Man kann an dem LED's auch nichts erkennen. Power und die 3 Netzwerk LED's leuchten ganz normal. Act gar nicht.
    Aber der PI ist nicht mehr erreichbar.

    Achso was ich vergessen habe:
    Ich habe auf dem PI noch ein Perl Script laufen welches ebenfalls Daten per UDP sendet. Ich denke zwar nicht das das ein Problem ist .....


  • Man kann an dem LED's auch nichts erkennen.


    Evtl. kannst Du den watchdog benutzen und auch so konfigurieren, dass Du brauchbare Informationen betr. der Ursache für das "Aufhängen" deines Pi, bekommst.

    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-p3 (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 mache ich das denn ???

    Hmm okay habe den link gerade mal durchgesehen. Ich weiß jetzt generell wie der watchdog läuft. Wüsste aber nicht wie ich das auf mein Prob nutzen könnte.

    Einmal editiert, zuletzt von Iksi (16. August 2014 um 23:44)


  • Wie mache ich das denn ???


    Wenn dein Pi mit einem Router verbunden ist, dann könntest den watchdog so konfigurieren, dass dieser regelmäßig wiederholend die Verbindung zum Router prüft und wenn diese unterbrochen ist, dann mit einem Script, interne Informationen z. B. zu:

    Code
    route -n
    ifconfig -a
    arp -av
    free -m


    etc. einholt und diese zwecks Auswertung (wenn möglich) speichert.

    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-p3 (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 generell an dem Python script kann es nicht liegen ???


    Ich kenne mich mit python nicht aus, aber da Du schreibst:

    Zitat


    Seit dem ich das Script aufgespielt habe hängt sich der RPi aber nach 3-6 Stunden auf.


    , könnte es auch an deinem Script liegen. Evtl. können dir hier, andere Forummitglieder helfen.

    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-p3 (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

  • Am Programm findet sich nix Besonderes. Den Parsingalgorithmus versteht man aber nur wenn man das Datenformat kennt. Ich haette das mit regulären Ausdrücken gemacht und nicht mit Indizes i und j herumjongliert. Aber das hat nix mit dem Aufhängen zu tun :shy:

    Ich vermute da gibt es auf der Netzwerkprotokollseite irgendwann ein Problem. Irgendwie kommen vermutlich die beiden Kommunikationspartner aus dem Tritt. Leider kenne ich mich mit Netzwerkprotokollen nicht aus und kann da weiterhelfen :no_sad:

  • Hallo Iksi,

    besteht denn zum Zeitpunkt des Aufhängens die Netzwerkverbindung noch? (Stichwort: Mysterium)...

    Wenn die nämlich nicht mehr besteht, wird beim Versuch, die Daten über Netzwerk einzulesen / abzulegen, intern nur noch Fehlermeldungen generiert.

    Hast Du mal ge-ping-t?

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Pingen klappt, also Antwort kommt.
    Ich kann aber weder auf den Webserver zugreifen noch per SSH das Terminal öffnen. Und UDP Diagramme kommen eben auch nicht mehr. Weder aus dem Python script, noch über den perl Server.
    Die Led's für das Netzwerk leuchten aber noch. Wenn ich den NW Stecker raus ziehe gehen se auch wieder aus. Stecke ich ihn wieder ein sind die Led's wieder an. Aber Zugriff geht trotzdem nicht.

    Ich werde es glaube ich mal probieren das Script nicht mit einer Endlosschleife sondern nur einmal durchlaufen lassen. Und dann über die Crontab jede Minute einmal ausführen.
    Wartet die Crontab bis das Script durch ist bevor es den nächsten Befehl startet ?

    Einmal editiert, zuletzt von Iksi (17. August 2014 um 15:16)

  • Hallo Iksi,

    dann liegt die Ursache meiner Meinung nach nicht am Python-Skript - sondern an der Stabilität der Netzwerkverbindung.

    Dieses Thema haben wir hier im Forum schon mehrere zig-mal diskutiert.

    Demnach glaube ich auch nicht, dass die Umstellung auf cron etwas bringt - denn die Ursache (Netzwerkverbindung geht verloren) wird davon nicht beeinflusst. Zudem sollte die Systemauslastung um Größenordnungen heftiger sein (Python laden, Skript laden, Python-Skript abarbeiten, Programm beenden, Python-Interpreter beenden, wahrscheinlich nach wenigen Sekunden das Ganze nochmal, ...).

    Ich würde mal einen anderen Weg gehen:
    - Werte auslesen inkl. Überprüfen der Verbindung: Fehlt die Verbindung, sind entsprechende Dateien zu "korrigieren"
    - Werte anzeigen, auswerten, speichern inkl. Überprüfung der Verbindung: dito.

    Das Feststellen unterbrochener Verbindungen und das Korrigieren entsprechender Dateien dauert ca. 1 Sekunde. Wird der Fehler seitens der Software entdeckt und korrigiert, merkt der Rest vom Programm davon gar nichts.

    Bricht die Verbindung zusammen, während die Verbindung genutzt wird, dann kannst Du dies über eine Fehlerbehandlung abfangen - und den Vorgang wiederholen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (17. August 2014 um 15:35)

  • Hmm, da habe ich nur keine Ahnung wie das geht.
    Das Problem besteht aber eben auch erst seit dem das Python Script installiert ist. Vorher lief der Pi monatelang super. Die UDP Daten über Perl sind gesendet worden. Und er ist nie abgestürzt.

    Ich dachte dass wenn ich das über Crontab mache kann ich verhindern dass Perl und Python zeitgleich UDP Daten versenden. Evtl. Ist das ja auch ein Problem ?

  • Also so langsam bin ich echt am verzweifeln.
    Ich habe nun folgende Dinge ausprobiert:

    1. Anderer RPi: selbes Problem

    2. RPi komplett neu installiert, also Raspian drauf, System komplett auf den neuesten Stand gebracht, also alle updates / upgrades installiert, aber keine anderen Programme oder sonstiges was nicht für dieses Python Script notwendig ist: selbes Problem

    3. Ganz simples Programm geschrieben, welches nur die Daten über den Seriellen Port ausliest und den Port dann wieder schließt. 50 Sekunden warten Port öffnen, auslesen schließen ... : selbes Problem

    4. Den Stecker von den GPIO's abziehen: es läuft

    So nun weiß ich also dass er läuft wenn ich entweder die serielle Schnittstelle nicht anschließe oder, wenn die ser. Schnittstelle angeschlossen ist, ich das Python Programm nicht ausführe. Aber das bringt mich ja nun mal nicht weiter !!!

    Hier mal der Code von dem ganz simplen Programm:
    (Ich warte mit dem auslesen so lange bis 800 Zeichen da sind oder 10s vorbei sind.)

    Wäre für jede Hilfe dankbar.

    Gruß Iksi

Jetzt mitmachen!

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