Closed chrissooo closed 1 year ago
Nachtrag,
Der USB Adapter scheint das Problem zu sein: pi@nas:~ $ cat /dev/ttyUSB1 pi@nas:~ $ cat /dev/ttyUSB0 pi@nas:~ $ cat /dev/ttyUSB2 cat: /dev/ttyUSB2: Nicht genügend Hauptspeicher verfügbar
USB2 ist Tod. Nach Neustart geht es wieder für zwei Tage. Tut mbmd hier irgendwas beim abfragen nicht beenden oder so?
Noch ein Nachtrag, das ganze kann ich loswerden wenn ich den Adapter neu initialisiere. Das werde ich jetzt ertsmal als Cronjob alle 24 Stunden machen. Wie gesagt, passiert das ja rund alle 2 Tage.
Offensichtlich ein Memoryleak. Die lassen sich mit Go ganz gut diagnostizieren. Wenn Du das Interesse hast dabei zu helfen baue ich die Unterstützung für die Diagnose mit ein, dann kannst Du mit tracen und wir die Traces anschließend auswerten. Bin gespannt woran es liegt, bei mir lief es fehlerfrei über Monate…
Gern kann ich das machen. Bauen kann ich selber wenn du etwas vorbereitest.
Probiers mal. Siehe https://github.com/evcc-io/evcc/issues/2748#issuecomment-1055626609. Hier sollte memprofile
zur Anwendung kommen.
Hi, ich werde das erst nächste Woche testen könne. Aber danke schonmal. Will aber noch was berichten, bzw. ergängen.
Das ganze rufe ich über exec() in einem PHP Skript auf. Das ganze läuft auf einem lighttpd Server. Der Aufruf wird alle 7 Sekunden von InfluxDB gemacht. Soweit die Umstände, die habe ja noch gar nicht so geschildert.
Jetzt habe ich vorgestern ein anderes Tool verwendet statt mbmd. Konkret mbpoll womit ich auch Modus Adressen abfragen kann. Das ganze auch in dem PHP Skript über exec(). Jetzt war heute der USBStick auch wieder auf dem gleichem Zustand.
Das Neustarten von lighttpd oder php hat nichts gebracht. Auch free zeigt nichts auffälliges, noch jede Menge freier Speicher.
Ich werde deine Version auf jeden Fall laufen lassen um zu sehen was passiert, aber vielleicht liegt es am Betriebssystem? Das ist halt ein Rasparry PI 4 mit Standard OS... ich berichte.
Jetzt bin ich doch remote drauf und habe gebaut. Jetzt check ich es gerade nicht wie ich das debugen soll. Ich rufe das ja immer so auf:
mbmd read -d ORNO1p:1 -a /dev/ttyUSB2 -b 9600 --comset 8E1 40961 1
Dann zeigt er mir das Ergebnis und das Programm wird beendet.
--profile oder --memprofile anhängen sagt dass es den parameter nicht gibt ...
Alles klar, jetzt vestehe ... da gibt es auch das "run" ... habe ich gemacht. Leider kommt ein 404 beim aufruf: http://nas:8880/debug/pprof/goroutine?debug=1 Beim starten habe ich versucht --profile und --memprofile anzuhängen. KOmmt immer Fehlermeldung dass er den Parameter nicht kennt.
Das macht in Deinem Fall (der erst jetzt klar wird) auch keinen Sinn. read
kann kein Speicherleck haben da der Prozess ja immer wieder beendet wird. Dein Problem hat also nix mit mbmd zu tun.
Ok, verstehe ... das sorry für die Umstände. Der Workaround mit dem nächlichen reinitialisieren des Sticks geht ja .. Danke!
Macht nix, das Feature können wir ja trotzdem mal brauchen...
Ich verwende mbmd folgendermaßen: /usr/bin/mbmd read -d ORNO1p:1 -a /dev/ttyUSB2 -b 9600 --comset 8E1 40961 1
Es funktioniert auch eigentlich ganz gut. Der Wert kommt ganz normal raus. Mur st das Problem, wenn diese Anfrage ca. 2 Tage läuft (wird jede 7 Sekunden ausgeführt), dann kommt nur noch: cannot allocate memory
Wenn ich den PI neu starte, funktioniert es wieder für ca. 2 Tage.
Kann mir jemand helfen?