Python script macht einen hardreset bei meinem Pi

  • Hallo zusammen,

    ich habe einen sehr merkwürdigen Effekt.

    Python führt bei meinem Pi nach einer nicht nachvollziehbaren und variablen Zeit einen hardreset durch, bzw. läßt den Pi neustarten.

    Ich greife auf den PiZero per Putty zu. Mit dem Putty fällt es direkt auf. Die Meldung vom Putty ist "Network error: Software caused connection abort". Der Neustart passier auch wenn der Putt nicht läuft, dann merke ich es nur nicht.

    Diese Neustart passiert nur, wenn ein Python script läuft. Wenn kein Python script läuft, gibt es auch kein Neustart, dann läuft der PI tadellos durch.

    Die ganzen Python scripte liefen vorher über Monate tadellos und sind halt leider notwendig für meine Gartenbewässerung.

    "Vorher...". Was hab ich verändert. Da ich die Steuerung auf MQTT umstellen wollte, habe ich paho mqtt für Python installiert. Ich verwende Python2.7.13.

    Nachdem mir aufgefallen ist, dass der PI immer wieder (mal nach 15min mal nach 3 Stunden) einen Neustart hinlegt, wenn ein Python Script läuft, habe ich paho mqtt wieder deinstalliert. Ohne Erfolg, der Effekt ist immer noch da. Da der PI hart resettet wird, also keine Logeinträger meiner Python scripts, habe ich mit

    Code
    for i in {1..6000}; do sleep6 && sudo ps aux; do

    geschaut, ob das script bis zum ende läuft und welche CPU last und Speichernutzung es hat.

    Ja, es läuft bis zum Ende und keine Besonderheiten.

    Kann es sein, dass die Installation von MQTT bei Python eine Einstellung verändert hat, die Python dazu bringt einen Neustart durchzuführen?:/ (was ich mir nicht vorstellen kann...

    Hat jemand eine Idee?

    Gruß

    Heiko

  • Hallo,

    unmöglich ist nicht, aber Python per se kann den Pi nicht neu starten. Klar kannst du mit Hilfe von Python einen Befehl absetzen, aber das ist dann ein externer Befehlsaufruf.

    Wie startest du das Skript? Über systemd? Wenn ja, was sagt das Journal von systemd?

    Und zeig' mal dein Skript.

    BTW: Python 2 ist seit dem 1.1.2020 ohne Support durch die Python-Entwickler, du solltest dringend auf Python 3 wechseln.

    Gruß, noisefloor

  • Seit wann ist das denn, also zeitlich gesehen? Kann das mit den höheren Aussentemperaturen zusammenhängen, die wir zur Zeit haben?

    Falls Du noch einen anderen Rechner im Netz hast, oder einen aufsetzen kannst, könntest Du Temperatur, Prozesse, und so weiter, und auch Deine Python-Skripte dort hin protokollieren lassen und schauen ob sich dadurch Erkenntnisse ergeben.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Vielen Dank erstmal für die Rückmeldungen. Leider dauern die Tests sehr lange, weil der Reset mal nach 15 Minuten und mal nach 6 oder 8 Stunden erfolgt, deshalb hier erste kurze Rückmeldung meinerseits.

    Ja, ich weiß Python 3 ist angesagt, aber die Scripte sind schon älter und bisher passte es (... bisher...) Never change a running system...

    Ich hatte auch schon angefangen jetzt die Scripte anzupassen, aber ich bekomme die Module die ich dafür brauchen nicht in Python 3 registriert.

    Ich habe den Eindruck, dass der Python interpreter eine Macke hat, denn nur wenn ein Python script läuft resettet der PI, selbst wenn ich uralt scripts nehme von letzem Jahr, die Monate lang liefen, resettet er jetzt.

    Ich habe jetzt MQTT wieder installiert und hab ein kleines mini mqtt test script laufen lassen, das lief verrückterweise über Nacht durch, die anderen resetten den PI weiterhin. Kann es sein, dass eines der Module (also "Import blabla") einen Schlag weg hat. Den die Imports sind bei allen Scrips gleich (ausser dem Testscript)

    Python
    import os.path
    import serial
    import time
    import datetime
    import sqlite3
    from datetime import datetime
    import os, sys

    Der Pi hängt mit einem Arduino zusammen an einem 50Watt Netzteil mit sauberen und sabilen 5,06 Volt. Der PI ist ein PIZero. Wobei ich bisher noch nicht geststet habe, ob der Effekt mit ganz eigener Stromversorgung auch kommt. Werde ich als nächstet testen.

    Viele Grüße

    Heiko

    PS:

    Die Anlage steht in einer kühlen Garage.

  • Nein die Module sind ok,

    Aber evtl einer deiner Codes dass du den Arbeitsspeicher auslastest (überlastest).

    Ich würde mich aber jetzt nicht so auf Python versteifen, hast du schon mal einen Stresstest gemacht?

    Hast du dmesg schon mal auf Auffälligkeiten geprüft?

  • Wenn Auffälligkeiten rot sind habe ich hier folgendes...

    Code
    [   13.003685] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
    [   13.004133] usbcore: registered new interface driver brcmfmac
    [   13.338394] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
    [   13.338588] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
    [   13.339705] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Oct 23 2017 03:55:53 version 7.45.98.38 (r674442 CY) FWID 01-e58d219f

    Ich bin des lesens des dmesg nicht mächtig :(

    Einmal editiert, zuletzt von Alti (1. Juli 2020 um 23:21)

  • Das sind doch auch wieder nicht alle fragen:

    Ich würde mich aber jetzt nicht so auf Python versteifen, hast du schon mal einen Stresstest gemacht?

    https://www.pablo-bloggt.de/linux/stresste…ck-unter-linux/


    Aber evtl einer deiner Codes dass du den Arbeitsspeicher auslastest (überlastest).

    dh. Code zeigen und RAM überwachen

    aber zum Test, starte mal nur dieses Pythonskript:

    Code
    import signal
    
    signal.pause()

    Was passiert dann? Auch ein Neustart? Aber ich sag immer noch, dass es nicht an Python liegt, außer du müllst den RAM voll, dazu musst du aber mal Code zeigen!

    Speicher mal die Logs, suche nach Undervolt o.ä.

    Auch stell mal die Speicherung der Logs auf dauerhaft

    https://wiki.ubuntuusers.de/Logdateien/

    https://wiki.ubuntuusers.de/systemd/journa…Journal-aendern

    und dann nach dem auftreten durchsehen auf Auffälligkeiten.

  • Hallo zusammen,

    nochmal vielen Dank für die ganzen Tips und Ratschläge und auch Nachfragen. Wie ich sagte dauern die Test halt sehr lange. Aktuell läuft das "Script" von Hofei seit rund 11,5 Stunden ohne Ausfall. Gestern zB hatte ich mit den beiden folgenden Scripten nach 1168 Minuten (also rund 20 Stunden) erst den Ausfall.

    Ich versuche alle Fragen zu beantworten und Tips "abzuarbeiten", aber ich gebe zu, dass ich mit ein paar Sachen nichts anfangen kann, bzw. mein Wissen (noch) nicht ausreicht.

    Also zu dem rpi-update; mir wäre nicht bewußt das mal gemacht zu haben. Der Pi läuft schon seit 3 Jahren bzw. habe ich vor 3 Jahren aufgesetzt und wenn ich das richtig verstanden habe sollte man das rpi-update nicht "prophylaktisch" machen.

    Wegen dem möglichen Speicherproblem hatte ich mir, wie oben beschrieben, mit einem inline bash script geholfen.

    Das war der letzte Eintrag im ps aux vom Python Script:

    root 3044 0.0 0.8 24244 3664 pts/0 S 07:27 0:00 sudo python /mnt/samba/Gartenbrunnen/PumpenfernsteuerungV2.1.py

    root 3048 41.4 2.5 15252 11256 pts/0 R 07:27 66:45 python /mnt/samba/Gartenbrunnen/PumpenfernsteuerungV2.1.py

    die 41% CPU Auslastung war über den gesamten Zeitraum in der Größenordnung, das Gleiche mit den 2,5% Speicher.

    Letzter Punkt für jetzt, wie mache ich einen Stresstest?

    Viele Grüße

    Heiko

  • Also das wär ja echt schnell nach Python3 portiert ;)

    Fang hiermit gleich mal an. Weg von Python 2.

    Letzter Punkt für jetzt, wie mache ich einen Stresstest?

    Ist in #12 verlinkt.

    aber ich gebe zu, dass ich mit ein paar Sachen nichts anfangen kann, bzw. mein Wissen (noch) nicht ausreicht.

    Dann einfach nachfragen

    EDIT:

    Bezieht sich die Brokeradresse auf eine lokale Netzwerkadresse? Kann es sein, dass es zu Problemem kommt wenn der Router einen IP Reconnect durchführt.

  • Hallo, ein kleiner Hinweis zum Thema python 2 zu 3, schau dir mal das Tool 2to3 an, das wird normalerweise mit python mitinstalliert, kann man ganz schnell code von version 2 zu 3 porten, habs allerdings bisher noch nicht ausprobiert

    Hoffe das hilft dir ein bisschen;)

Jetzt mitmachen!

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