NEWS
smartmeter Adapter 3.0.10 frisst Speicher (NodeJS 12)
-
Hallo,
ich habe letztes Wochenende eine groΓe Update-Session gemacht und ioBroker, NodeJS, Debian und die ganzen Adapter aktualisiert.
NPM rebuild wurde durchgefΓΌhrt.Soweit funktioniert fast alles ohne Probleme - das Log ist nicht auffΓ€llig, aber der smartmeter-Adapter frisst Speicher. Ich habe einen Screenshot mit Flot-Chart angehΓ€ngt. Das geht solange bis der Speicher aus ist und der Prozess abgeschossen wird. Dann geht es wieder von vorne los.
Ich betreibe ioBroker auf zwei Raspberry Pi 3. Der smartmeter-Adapter lΓ€uft auf dem Master und liefert alle 4s Werte Seriell per SML 1.0.3. Ab und zu gibt es CRC-Fehler, die Seriell-Crashes wie in der vorher eingesetzten Version (1.2.x) habe ich nicht mehr.
Zu den aktuellen Versionen:
ioBroker Repo auf default
smartmeter-Adapter: 3.0.10
smartmeter-obis: 2.1.2
NodeJS: v12.16.2
NPM: 6.14.4
js-controller 2.2.9Ist Euch das Problem bekannt? Woran kΓΆnnte das liegen?
Danke und GrΓΌΓe,
Huebeni -
Hallo,
ich habe noch ein paar Dinge versucht, um den Fehler einzugrenzen:
- Der Anstieg des Speicherverbrauchs hΓ€ngt ab vom Abfrageintervall. D.h. je ΓΆfter abgefragt wird, desto schneller steigt der Speicherbedarf. Bei 0 steigt er am schnellsten an.
- Ich habe auf smartmeter-obis auf 2.0.5 zurΓΌckgerollt ==> kein erkennbarer Unterschied
Ich denke ich werde vorerst das Abfrageintervall erhΓΆhen und den Adapter automatisch neu starten lassen.
Ich finde es schon komisch, dass das Problem sonst keiner hat. Kann es irgendeine Dependency sein, die ich da erwischt habe?
GrΓΌΓe,
Michael -
Kurzes Update,
ich habe den Adapter als auch smartmeter-obis und serialport neu installiert. Leider keine Γnderung.
Serialport ist Version 8.0.7.Mit dem Debugger (Chrome-Dev-Tools) sind keine auffΓ€lligen Speicherlecks sichtbar. Das sieht man auch in meinem Flot-Chart: Der Heap wΓ€chst moderat.
Der Gesamtspeicherbedarf wΓ€chst aber immer massiv (memrss).
Leider habe ich noch keine weitere Idee.
Es gab mal vor einiger Zeit einen Bug in der Serialport-lIb: https://github.com/serialport/node-serialport/issues/1477 aber der sollte mittlerweile lΓ€ngst behoben sein.GrΓΌΓe,
Michael -
Bei mir lΓ€uft 3.1.2 problemlos auf einem PI3.
-
@wendy2702 Hi, danke fΓΌr die Info. Welche Node-Version verwendest Du? Wenn es keine UmstΓ€nde macht, wΓΌrden mich noch die Pakete interessieren, von denen smartmeter abhΓ€ngt (Ausschnitt aus npm list).
-
Hi,
Node 10.20.1
-
So, kurzes Update:
Ich habe den Host mit dem Smartmeter Adapter kurzerhand von Node 12.16.2 auf Node 10.20.1 downgegraded.
Seitdem scheint der Speicher nicht mehr endlos zu wachsen.
Habe jetzt den automatischen Neustart fΓΌr den Adapter entfernt und das Abfrageintervall auf 0s gestellt.
Morgen wird sich zeigen, ob es eventuell an Node 12 liegt. -
Hi,
Es sieht so aus, als lΓ€uft das Setup mit NodeJS 10 stabil.
Anscheinend gibt es in Verbindung mit NodeJS 12 noch Probleme auf dem Raspi 3.Umgebung:
Raspberry 3
Aktuelles Raspian "Buster"Nicht ok:
smartmeter-Adapter: 3.0.10
smartmeter-obis: 2.1.2
NodeJS: v12.16.2
NPM: 6.14.4
js-controller 2.2.9
serialport: 8.0.7OK:
Alles identisch bis auf
NodeJS: v10.20.1In den Charts sieht man, dass sich der Speicherverbrauch nach dem Welchsel zu NodeJS 10 fΓΌr den Adapter jetzt eingependelt hat. Davor sieht man den rasanten Anstieg, den ich durch die Adapter-Neustarts zurΓΌckgesetzt habe.
Bisher habe ich noch keine heiΓe Spur woran es liegt - vermute aber, dass es an der serialport-lib liegen kΓΆnnte. Diese hatte in alten Versionen Speicherlecks auf der (offiziellen nicht unterstΓΌtzten) Plattform arm und damit auf dem Raspi. Die Version 8.x hat groΓe Umbauten, da kann schon mal etwas kaputt gehen.
Ich weiΓ nicht wie aktiv ich das Thema in der nΓ€chsten Zeit verfolgen werde, nachdem es jetzt erst mal lΓ€uft.
Gibt es denn jemanden, der den Adapter mit NodeJS 12 auf einem Raspi ohne Probleme betreibt?
GrΓΌΓe,
Michael -
Moin,
hast du den Adapter mit node 10 ans Laufen bekommen? Hier mit Node.js: v10.20.1 und Adapter v 3.0.10 geht es nicht, auch das LΓΆschen und Neuinstallation auf 3.1.2 aus dem git hilft nicht.
Wie hast du denn neu kompiliert, nachdem du nods js upgedated hast?ost.HWR 2020-05-20 10:16:15.166 error instance system.adapter.smartmeter.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.HWR 2020-05-20 10:16:15.166 error Caught by controller[0]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) host.HWR 2020-05-20 10:16:15.165 error Caught by controller[0]: at Module._compile (internal/modules/cjs/loader.js:778:30) host.HWR 2020-05-20 10:16:15.165 error Caught by controller[0]: at Object.<anonymous> (/opt/iobroker/node_modules/serialport/node_modules/@serialport/bindings/lib/linux.js:2:36) host.HWR 2020-05-20 10:16:15.165 error Caught by controller[0]: at bindings (/opt/iobroker/node_modules/bindings/bindings.js:112:48) host.HWR 2020-05-20 10:16:15.164 error Caught by controller[0]: at require (internal/modules/cjs/helpers.js:25:18) host.HWR 2020-05-20 10:16:15.164 error Caught by controller[0]: at Module.require (internal/modules/cjs/loader.js:692:17) host.HWR 2020-05-20 10:16:15.164 error Caught by controller[0]: at Function.Module._load (internal/modules/cjs/loader.js:585:3) host.HWR 2020-05-20 10:16:15.163 error Caught by controller[0]: at tryModuleLoad (internal/modules/cjs/loader.js:593:12) host.HWR 2020-05-20 10:16:15.163 error Caught by controller[0]: at Module.load (internal/modules/cjs/loader.js:653:32) host.HWR 2020-05-20 10:16:15.162 error Caught by controller[0]: at Object.Module._extensions..node (internal/modules/cjs/loader.js:807:18) host.HWR 2020-05-20 10:16:15.162 error Caught by controller[0]: the module (for instance, using `npm rebuild` or `npm install`). host.HWR 2020-05-20 10:16:15.162 error Caught by controller[0]: NODE_MODULE_VERSION 64. Please try re-compiling or re-installing host.HWR 2020-05-20 10:16:15.161 error Caught by controller[0]: NODE_MODULE_VERSION 57. This version of Node.js requires host.HWR 2020-05-20 10:16:15.161 error Caught by controller[0]: was compiled against a different Node.js version using host.HWR 2020-05-20 10:16:15.160 error Caught by controller[0]: Error: The module '/opt/iobroker/node_modules/serialport/node_modules/@serialport/bindings/build/Release/bindings.node' host.HWR 2020-05-20 10:16:15.160 error Caught by controller[0]: ^ host.HWR 2020-05-20 10:16:15.153 error Caught by controller[0]: throw e; host.HWR 2020-05-20 10:16:15.152 error Caught by controller[0]: /opt/iobroker/node_modules/bindings/bindings.js:121
MOD-Edit: Code in code-tags gesetzt!
-
Nachtrag: steht ja auch im Log ;-), und mit "npm i serialport", sind wir schwupps wieder im Rennen..
-
@uschi08
SchΓΆnen Dank fΓΌr das Editieren.
Gibt es im Adapter noch ein erweitertes Log?
Der Adapter lΓ€uft jetzt zwar mit node 10 und in v 3.1.2 wieder an, dann passiert aber nichts mehr.smartmeter.0 2020-05-20 12:03:53.997 warn (1487) No or too long answer from Serial Device after last request. smartmeter.0 2020-05-20 12:03:53.995 info (1487) Error: No or too long answer from Serial Device after last request. smartmeter.0 2020-05-20 12:01:33.966 warn (1487) No or too long answer from Serial Device after last request. smartmeter.0 2020-05-20 12:01:33.957 info (1487) Error: No or too long answer from Serial Device after last request. smartmeter.0 2020-05-20 11:59:33.451 info (1487) starting. Version 3.1.2 in /opt/iobroker/node_modules/iobroker.smartmeter, node: v10.20.1
und der Stick (Weidmann) lief jahrelang unter node 8 / v3.0.10. Nach dem Upgrade auf node 10 bleibt die KΓΌche kalt..
-
@uschi08 sagte in smartmeter Adapter 3.0.10 frisst Speicher (NodeJS 12):
Gibt es im Adapter noch ein erweitertes Log?
Instanzen -> Expertenmodus -> Logstufe -> debug
-
@Homoran
ahh stimmt - Danke!
und jetzt kann man auch mehr sehen:smartmeter.0 2020-05-20 12:13:55.532 debug (24705) SET MESSAGE TIMEOUT TIMER: 120000 smartmeter.0 2020-05-20 12:13:55.524 debug (24705) SERIALPORT OPEN smartmeter.0 2020-05-20 12:13:55.520 debug (24705) connected set to false smartmeter.0 2020-05-20 12:13:55.510 debug (24705) CREATE SERIALPORT: 9600 8 1 none smartmeter.0 2020-05-20 12:13:55.504 debug (24705) SmartmeterObis options: {"debug":2,"protocol":"SmlProtocol","transport":"SerialResponseTransport","requestInterval":"20","anotherQueryDelay":"1000","transportSerialPort":"/dev/serial/by-id/us smartmeter.0 2020-05-20 12:13:55.064 info (24705) starting. Version 3.1.2 in /opt/iobroker/node_modules/iobroker.smartmeter, node: v10.20.1 smartmeter.0 2020-05-20 12:13:53.971 debug (24705) statesDB connected smartmeter.0 2020-05-20 12:13:53.969 debug (24705) States connected to redis: 192.168.178.45:9000 smartmeter.0 2020-05-20 12:13:53.952 debug (24705) States create System PubSub Client smartmeter.0 2020-05-20 12:13:53.947 debug (24705) States create User PubSub Client smartmeter.0 2020-05-20 12:13:53.934 debug (24705) Redis States: Use Redis connection: 192.168.178.45:9000 smartmeter.0 2020-05-20 12:13:53.929 debug (24705) objectDB connected smartmeter.0 2020-05-20 12:13:53.916 debug (24705) Objects connected to redis: 192.168.178.45:9001 smartmeter.0 2020-05-20 12:13:53.895 debug (24705) Objects client initialize lua scripts smartmeter.0 2020-05-20 12:13:53.894 debug (24705) Objects create User PubSub Client smartmeter.0 2020-05-20 12:13:53.891 debug (24705) Objects create System PubSub Client smartmeter.0 2020-05-20 12:13:53.882 debug (24705) Objects client ready ... initialize now smartmeter.0 2020-05-20 12:13:53.821 debug (24705) Redis Objects: Use Redis connection: 192.168.178.45:9001 smartmeter.0 2020-05-20 12:13:49.036 info (23708) Terminated (START_IMMEDIATELY_AFTER_STOP): Without reason smartmeter.0 2020-05-20 12:13:49.032 info (23708) terminating smartmeter.0 2020-05-20 12:13:49.028 debug (23708) SERIALPORT REMOVE LISTENERS smartmeter.0 2020-05-20 12:13:49.026 debug (23708) SERIALPORT CLOSE smartmeter.0 2020-05-20 12:13:49.017 debug (23708) CLEAR MESSAGE TIMEOUT TIMER smartmeter.0 2020-05-20 12:13:49.015 debug (23708) STOP smartmeter.0 2020-05-20 12:13:49.010 info (23708) Got terminate signal TERMINATE_YOURSELF smartmeter.0 2020-05-20 12:13:43.517 debug (23708) sendTo "listUart" to system.adapter.admin.0 from system.adapter.smartmeter.0 smartmeter.0 2020-05-20 12:13:43.513 info (23708) List of port: [{"path":"/dev/ttyS0"},{"path":"/dev/ttyS1"},{"path":"/dev/ttyS2"},{"path":"/dev/ttyS3"},{"manufacturer":"dresden elektronik in
also immer noch der SERIALPORT?
LΓΆsungsansΓ€tze in diesem Fall?Danke,
Ole -
haut nicht mehr hin, ich hab nen issue aufgemacht.
https://github.com/Apollon77/ioBroker.smartmeter/issues/117#edit:
und auch wieder geschossen.
Wen es integressiert: die Adaptereinstellungen, die bei mir mit dem Wiedmann funktionieren: