Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Ich würde so gerne, doch es klappt nicht

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Ich würde so gerne, doch es klappt nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • Jey Cee
      Jey Cee Developer last edited by

      Ich werd heute abend auch mal die system specs von meinem system posten.

      Bezüglich ram muss man zwischen reserviert und tatsächlich genutzt unterscheiden. ioBroker zeigt reserviert an. Mit df -h sieht man die Belegung aufgeschlüsselt. Bei mir zeigt iobroker 10% frei an, df -h sagt 360mb. Bei 1gb wären das 36%.

      Gesendet von meinem Jolla mit Tapatalk
      2605_26863396-5825-bd16-0d91-b45c430df278.log

      1 Reply Last reply Reply Quote 0
      • L
        looxer01 last edited by

        Hi JC

        df-h sieht bei mir zur Zeit so aus. (letzter reboot - gestern)

        Filesystem Size Used Avail Use% Mounted on

        rootfs 89G 16G 70G 19% /

        /dev/root 89G 16G 70G 19% /

        devtmpfs 484M 0 484M 0% /dev

        tmpfs 98M 228K 98M 1% /run

        tmpfs 5.0M 0 5.0M 0% /run/lock

        tmpfs 6.1G 0 6.1G 0% /run/shm

        /dev/mmcblk0p1 56M 15M 42M 26% /boot

        free -m sieht so aus

        total used free shared buffers cached

        Mem: 974 887 87 0 6 35

        -/+ buffers/cache: 845 129

        Swap: 30043 26 30016

        also auch nicht üppig - Trotzdem es gibt überhaupt gar keine Abstürze

        vG Looxer

        1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer last edited by

          Ah verdammt ich bring zur Zeit alles durcheinander free -m zeigt den ram an. Die Zeile bufgers/cache zeigt bei free den freien speicher.

          Gesendet von meinem Jolla mit Tapatalk

          1 Reply Last reply Reply Quote 0
          • A
            aquapro last edited by

            lol, wollte gerade schreiben, ob wir noch vom gleichen "Speicher" reden. 🙂

            1 Reply Last reply Reply Quote 0
            • L
              looxer01 last edited by

              habs ergänzt

              1 Reply Last reply Reply Quote 0
              • N
                nobody last edited by

                Hallo zusammen,

                wäre mal an der Zeit, ein kleines Tutorial zum Thema Speicheroptimierung zu schreiben. Diese Daten verstecken sich zurzeit in vielen einzelnen Threads und sind somit nur schwer zu finden. Vielleicht kann das ja auch jemand in das Handbuch übernehmen. Ich hab da keinen Zugriff darauf.

                ioBroker und alle Adapter basieren auf node.js, einer Entwicklung für Serverseitiges Javascript auf Basis der V8 Engine von Google.

                Javascript ist eine interpretierende Sprache, bei der Variablen nicht explizit deklariert und freigegeben werden müssen. Die Bereinigung und Freigabe von Speicherbereichen erfolgt hier im Rahmen einer sogenannten Garbarge Collection. Diese arbeitet bei V8 nach dem Stop-The-World-Modell, d.h. für die Speicherbereinigung werden alle anderen Prozesse gestoppt und erst nach Abschluss der Speicherbereinigung wieder freigegeben.

                Die aktuellen Versionen von V8 bereinigen per Default den nicht mehr benötigten Hauptspeicher erst, wenn 512 MB belegt wurden. Da bei ioBroker der js-controller, alle als Daemon laufende Adapter und node-red eigenständige node.js Prozesse sind, kann somit theoretisch jeder dieser Prozesse auf mehr als 512 MB anwachsen. Dies ist insbesondere aus Systemen mit geringem RAM (z.B. Raspberry Pi) oder vielen Adaptern problematisch, da dies zur Beendigung von Prozessen das das System oder Programmabstützen führen kann.

                V8 erlaubt jedoch individuelle Festlegungen des Zeitpunkts, an dem die Garbage-Collection gestartet werden soll. Dies erfolgt über den Startparameter –max-old-space-size. Die aktuellen Versionen des js-controllers und der Admin-Oberfläche erlauben die individuelle Festlegung dieses Parameters pro Adapter.

                Für den js-controller muss dieser Parameter über die Konfigurationsdatei festgelegt werden:

                Datei /opt/iobroker-data/iobroker.json z.B. mit nano öffnen.

                Folgenden Text direkt nach der ersten geschweiften Klammer vor "network": { einfügen:

                    "system": {
                        "memoryLimitMB": 80
                    },
                
                

                Hierdurch wird das Limit auf 80 MB gesetzt. Dieser Wert scheint zurzeit für den Controller ausreichend zu sein.

                Für alle anderen Adapter kann der Wert über die Admin-Oberfläche eingestellt werden:
                632_a.png

                Das Speicherlimit kann hier in der Spalte RAM-Limit eingetragen werden. Die Angabe erfolgt hierbei in MB. Keine Angabe = Default 512 MB.

                Welche Werte hier sinnvoll sind, hängt vom System und dem Nutzungsszenario ab. Das Bild zeigt Beispielwerte, mit dem ein Produktivsystem auf einen Raspberry PI 2b stabil läuft.

                Zum Thema history und sql gibt es ja schon einen guten Thread, der die Vor- und Nachteile beschreibt. Insbesondere bei mysql kann man durch die Anpassung der Konfiguration auch noch einiges zum Standard einsparen.

                Der Wert für den node-red-Adapter betrifft nur den ioBroker-Adapter, nicht jedoch den node-red-Prozess selbst. Dieser wird vom Adapter mit –max-old-space-size=128 gestartet.

                1 Reply Last reply Reply Quote 0
                • L
                  looxer01 last edited by

                  gab bzw gibt es denn Unterschiede bei der Garbage Collection, je nach verwendeter Linux Version ?

                  Das könnte ja das unterschiedliche Verhalten (Stabilitaet) erklären. Andersherum, wenn das nicht der Fall ist, dann erklärt es das nicht.

                  vG Looxer

                  1 Reply Last reply Reply Quote 0
                  • N
                    nobody last edited by

                    Die Garbage Collection hängt in erster Linie an V8 und somit an der node.js-Version.

                    Bei den node.js-Versionen gibt es zumindest subjektiv erhebliche Unterschiede. Während die 0.10.x wohl auch mit dem geringen Speicher noch einiger Maßen zurecht gekommen ist, haben die von mir ausprobierten Version von 0.12.x fast alle mehr oder weniger häufig zu Abstützen geführt. Problem ist nur, dass mittlerweile viele node.js-Module mindestens eine 0.12.x voraussetzen. Auch wird der Stream 0.10.x nicht mehr weiterentwickelt und enhält keine Fixes mehr.

                    Die node.js-Version 4.2.x basiert nicht direkt auf 0.12.x sondern auf den wieder integrierten Parallelprojekt io.js und läuft subjektiv stabiler als 0.12.x, hat aber auch das Problem, dass der Speicher irgendwann aufgebraucht ist. Ich mutmaße mal, dass dies generell an den neueren V8-Versionen liegt, die einfach per Default für mehr Hauptspeicher und nur wenige parallel laufende Prozesse optimiert sind. Deswegen sind die obigen Speicherlimitierungen wichtig.

                    Generell würde ich heute für den Raspi 2b zum Jessie-Image mit node.js 4.2.6 raten. Das ist die aktuelle Long Term stable Version, die noch mit Fixes versorgt wird. Diese läuft sowohl mit ioBroker als auch mit dem aktuellen node-red 13.1 sehr gut zusammen.

                    In node.js 5.x hat jedoch zu viele Änderungen drin und ist absolut nicht zu empfehlen.

                    Alle aktuellen node.js-Versionen werden übrigens für Debian Jessie und somit auch für das aktuelle Raspbian-Image über den Package-Manager angeboten. Das hat den Vorteil, dass man sich über Updates und Kompatibilitäten weniger Gedanken machen braucht. Im Standard ist die 0.12.x LTS enthalten, für 4.2.x LTS muss folgendes einmal ausgeführt werden:

                    curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
                    sudo apt-get install -y nodejs
                    
                    

                    Die LTS-Versionen werden nur noch mit Fixes versorgt, bekommen aber keine neuen Feature mehr. Somit ist das Risiko, dass ein Update zu Inkompatibilitäten führt, eher gering.

                    https://nodejs.org/en/download/package- … tributions

                    Generell lassen sich viele Fehler vermeiden, wenn man die npm-Pakete bei der Installation selber baut oder wenigstens als Fallback bauen kann. Dafür muss dann auch noch folgende installiert werden:

                    sudo apt-get install -y build-essential
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • L
                      looxer01 last edited by

                      …danke nobody. Das ist mal ne super Erklärung (und Empfehlung)

                      und erklärt auch warum ich keine Probleme habe.

                      Einschränkungen habe ich bisher in keiner Weise bemerkt.

                      Das heisst aber wohl, dass es durchaus zu Problemen bei zukünftigen updates von iobroker bei mir kommen kann.

                      Ich denke, dass ich das mal abwarte. Stabil ist besser als labil 🙂

                      vG Looxer

                      1 Reply Last reply Reply Quote 0
                      • Jey Cee
                        Jey Cee Developer last edited by

                        @Nobody,

                        danke für dein Erklärungen die sind sehr aufschlußreich.

                        Bei einem Punkt hab ich aber andere Erfahrungen gemacht und ich glaube das Problem haben auch andere und wissen es nicht.
                        @nobody:

                        Im Standard ist die 0.12.x LTS enthalten `
                        Bei meinen Installationen ist mir aufgefallen das bereits eine Node.js Version installiert ist, wenn man Debian Jessie auf dem Pi installiert.

                        Es handelt sich um eine 0.10.x Version, diese lässt sich weder mit apt-get deinstallieren noch updaten. Auch ersetzen klappt nicht immer richtig weil die Symlinks erhalten bleiben, ebenso wie die PATH Variable(n).

                        Erst mit dem deb-Paket von nodesource hat es dann Funktioniert.

                        Hier mal meine Specs:

                        ! Hardware: CCU2, RPi2 mit SSD
                        ! Software: Debian Jessie (offizielle Version, nicht minimal), nodejs v4.2.1, npm v2.14.7, CCU2 2.15.2 + CUxD 0.9
                        ! ioBroker:
                        ! js-controller 0.8.4
                        ! system.adapter.admin : admin - 0.7.3
                        ! system.adapter.hm-rpc : hm-rpc - 0.5.2
                        ! system.adapter.hm-rega : hm-rega - 0.2.2
                        ! system.adapter.harmony : harmony - 0.5.5
                        ! system.adapter.web : web - 1.3.4
                        ! system.adapter.icons-addictive-flavour-png: icons-addictive-flavour-png - 0.1.0
                        ! system.adapter.icons-material-png : icons-material-png - 0.1.0
                        ! system.adapter.icons-material-svg : icons-material-svg - 0.1.0
                        ! system.adapter.icons-mfd-png : icons-mfd-png - 0.1.2
                        ! system.adapter.icons-mfd-svg : icons-mfd-svg - 0.1.2
                        ! system.adapter.icons-ultimate-png : icons-ultimate-png - 0.1.0
                        ! system.adapter.javascript : javascript - 1.1.4
                        ! system.adapter.sayit : sayit - 0.3.16
                        ! system.adapter.scenes : scenes - 0.2.4
                        ! system.adapter.sonos : sonos - 0.1.7
                        ! system.adapter.vis : vis - 0.8.4
                        ! system.adapter.vis-bars : vis-bars - 0.1.1
                        ! system.adapter.vis-colorpicker : vis-colorpicker - 0.1.1
                        ! system.adapter.vis-fancyswitch : vis-fancyswitch - 0.1.0
                        ! system.adapter.vis-google-fonts : vis-google-fonts - 0.1.0
                        ! system.adapter.vis-hqwidgets : vis-hqwidgets - 0.2.5
                        ! system.adapter.vis-jqui-mfd : vis-jqui-mfd - 0.1.0
                        ! system.adapter.vis-keyboard : vis-keyboard - 0.0.2
                        ! system.adapter.vis-lcars : vis-lcars - 0.1.6
                        ! system.adapter.vis-metro : vis-metro - 0.2.0
                        ! system.adapter.vis-plumb : vis-plumb - 0.1.6
                        ! system.adapter.vis-rgraph : vis-rgraph - 0.0.2
                        ! system.adapter.vis-timeandweather : vis-timeandweather - 0.0.2
                        ! Und da die Frage eh kommt wie man eine Liste aller Adapter in Textform bekommt ohne zu Tippen, hier die Lösung:
                        ! im Terminal "iobroker list adapters" eingeben.
                        ! free -m zeigt bei mir folgendes an:
                        ! total used free shared buffers cached
                        ! Mem: 925 808 117 18 78 182
                        ! -/+ buffers/cache: 547 378
                        ! Swap: 99 0 99

                        1 Reply Last reply Reply Quote 0
                        • A
                          aquapro last edited by

                          Danke nobody!

                          Ich hab auf meinen beiden BananaPi Jessie drauf, mit node v0.12.6 .

                          Nach Deiner Meinung sollte v4.2.6 die bessere Wahl sein?!

                          Anbei mal zwei screens der Bananen (top sortiert nach Speicher).

                          Wobei z.B. der Speicherfresser history.0 schon mit RAMLimit 80 versorgt ist.

                          Nur versteh ich die Anzeige dann nicht, sieht mehr als 80 aus.

                          admin.0 läuft auf master, history.0 auf client.

                          ! filename="top3.PNG" index="1">~~
                          filename="top3a.PNG" index="0">~~
                          ! system.adapter.admin : admin - 0.7.3
                          ! system.adapter.hm-rpc : hm-rpc - 0.5.2
                          ! system.adapter.hm-rega : hm-rega - 0.2.2
                          ! system.adapter.history : history - 0.2.1
                          ! system.adapter.web : web - 1.3.4
                          ! system.adapter.vis : vis - 0.8.4
                          ! system.adapter.vis-hqwidgets : vis-hqwidgets - 0.2.5
                          ! system.adapter.vis-jqui-mfd : vis-jqui-mfd - 0.1.0
                          ! system.adapter.rickshaw : rickshaw - 0.3.1
                          ! system.adapter.fritzbox : fritzbox - 0.2.1
                          ! system.adapter.ical : ical - 1.1.1

                          1 Reply Last reply Reply Quote 0
                          • A
                            aquapro last edited by

                            @Jey Cee

                            Ich hab gar nicht geschaut, was bei meinem Jessie drauf war. Gleich die Befehle von der iobroker Installseite genommen.

                            wget http://www.iobroker.net/wp-content/uploads/2015/09/nodejs0_12_6_armhf.deb
                            dpkg -i nodejs0_12_6_armhf.deb
                            rm nodejs0_12_6_armhf.deb
                            
                            

                            Und keinen Fehler bekommen und node -v zeigt v0.12.6 .

                            Hab ich jetzt ein verstecktes Problem und deshalb die Fehler?

                            Gruß

                            Tino

                            1 Reply Last reply Reply Quote 0
                            • Jey Cee
                              Jey Cee Developer last edited by

                              @aquapro: Ist definitiv mehr. Zum übernehmen der RAM Einstellungen muss mindestens der Adapter neu gestartet werden evtl. ist auch ein Kompletter Neustart sinnvoll.

                              Also wenn die richtige Node Version angezeigt wird sollte alles im grünen Bereich sein. Da er dann die gewollte Node installation anspricht.

                              Ich weiss leider nicht mehr in welchem ordner die vor installierte Node version war, aber ich versuch das mal heraus zu finden.

                              Weiss jemand was die spalte Time+ bei Top aussagt? Ist das die Uptime des angezeigten dienstes?

                              1 Reply Last reply Reply Quote 0
                              • Thisoft
                                Thisoft last edited by

                                Das ist ja mal eine spitzenmäßige Zusammenfassung zum Speicherthema. So langsam verstehe sogar ich die RasPi-Geschichte 😉

                                Ich habe jetzt gerade mal meine Node-Version ermittelt. Es ist die 0.10.22 - sollte ich da mal updaten?

                                Obwohl meine Installation leidlich läuft, zumindest wenn ich nach Updates genügend Reboots gemacht habe… 😉

                                1 Reply Last reply Reply Quote 0
                                • L
                                  looxer01 last edited by

                                  @Thisoft:

                                  ch habe jetzt gerade mal meine Node-Version ermittelt. Es ist die 0.10.22 - sollte ich da mal updaten? `
                                  die habe ich auch und überhaupt keine Probleme. Nach den Erklärungen von nobody werde ich productiv zunächst nix updaten.

                                  Endlich haben wir eine neue Empfehlung für die Installation. Die muss aber noch von den Nutzern mit instabilen Installationen hier bestätigt werden - meine ich.

                                  vG Looxer

                                  1 Reply Last reply Reply Quote 0
                                  • Jey Cee
                                    Jey Cee Developer last edited by

                                    Ich hab mal auf meinem Pi1 Jessie installiert und nach der Node version geschaut, die ist 0.10.29. Damit sollte ioBroker ja laufen.

                                    Wenn diese Version drauf ist findet man in /usr/bin den Link node der auf nodejs im selben ordner verweisst und unter /usr/lib die Ordner nodejs und node_modules.

                                    1 Reply Last reply Reply Quote 0
                                    • N
                                      nobody last edited by

                                      @aquapro:

                                      Danke nobody!

                                      Ich hab auf meinen beiden BananaPi Jessie drauf, mit node v0.12.6 .

                                      Nach Deiner Meinung sollte v4.2.6 die bessere Wahl sein?!

                                      Anbei mal zwei screens der Bananen (top sortiert nach Speicher).

                                      Wobei z.B. der Speicherfresser history.0 schon mit RAMLimit 80 versorgt ist.

                                      Nur versteh ich die Anzeige dann nicht, sieht mehr als 80 aus.

                                      admin.0 läuft auf master, history.0 auf client.

                                      ! filename="top3.PNG" index="1">~~
                                      filename="top3a.PNG" index="0">~~
                                      ! system.adapter.admin : admin - 0.7.3
                                      ! system.adapter.hm-rpc : hm-rpc - 0.5.2
                                      ! system.adapter.hm-rega : hm-rega - 0.2.2
                                      ! system.adapter.history : history - 0.2.1
                                      ! system.adapter.web : web - 1.3.4
                                      ! system.adapter.vis : vis - 0.8.4
                                      ! system.adapter.vis-hqwidgets : vis-hqwidgets - 0.2.5
                                      ! system.adapter.vis-jqui-mfd : vis-jqui-mfd - 0.1.0
                                      ! system.adapter.rickshaw : rickshaw - 0.3.1
                                      ! system.adapter.fritzbox : fritzbox - 0.2.1
                                      ! system.adapter.ical : ical - 1.1.1 `
                                      Nein, wenn du mit dieser Version keine Probleme hast, gibt es keinen Grund zu wechseln. Ich bin von der 0.12.9 auf die 4.2.x gewechselt, weil ich ohne die Begrenzungen immer Abstürze hatte. Die gibt es aber mit der 4.2.6 auch.

                                      Die LTS Versionen haben halt den Vorteil, dass diese noch gepflegt werden. Das ist vor allem dann wichtig, wenn das System auch über das Internet erreichbar ist. Bei mir ist der pi gleichzeitig Reverse proxy für alle Systeme und openvpn-Server.

                                      Wenn ich vorhin den Eindruck erweckt habe, dass man mit den Einstellungen direkt auf die Größe des Prozesses schließen kann, hab ich mich falsch ausgedrückt. Der Parameter max-old-space-size der damit gesetzt wird legt die maximale Größe des Heap fest, bei dem die Garbage Collection gestartet wird. Dies betrifft aber nur den Heap, vereinfacht ausgedrückt der Platz für Variablen. Darin nicht enthalten sind node.js, der Anwendungscode und der Platz für alle inkludierten Libs. Auch kann nur das frei gegeben werden, was nicht mehr verlinkt ist.

                                      Gerade Beim history - Adapter werden viele Daten im RAM gehalten.

                                      Gesendet von meinem GT-N8000 mit Tapatalk

                                      1 Reply Last reply Reply Quote 0
                                      • N
                                        nobody last edited by

                                        @Jey Cee:

                                        Ich hab mal auf meinem Pi1 Jessie installiert und nach der Node version geschaut, die ist 0.10.29. Damit sollte ioBroker ja laufen.

                                        Wenn diese Version drauf ist findet man in /usr/bin den Link node der auf nodejs im selben ordner verweisst und unter /usr/lib die Ordner nodejs und node_modules. `
                                        Ich hab mal bei Debian nachgesehen. Offiziell ist wirklich noch die 0.10.29. Ich hab wohl irgendwann mal das Repository von nodesource.com aufgenommen…

                                        Gesendet von meinem GT-N8000 mit Tapatalk

                                        1 Reply Last reply Reply Quote 0
                                        • V
                                          versteckt last edited by

                                          Hallo, habe heute für einen Arbeitskollegen erst einen Raspbian (Raspi 2) aufgesetzt.

                                          Dort ist eine 4er Node Version von http://weworkweplay.com/play/raspberry-pi-nodejs/ drauf.

                                          LG Christian

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          439
                                          Online

                                          31.8k
                                          Users

                                          80.0k
                                          Topics

                                          1.3m
                                          Posts

                                          10
                                          28
                                          5243
                                          Loading More Posts
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          The ioBroker Community 2014-2023
                                          logo