Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. [Erledigt] js-controller hohe Load

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Erledigt] js-controller hohe Load

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pxstd last edited by

      Hey,

      > "scheinbar" durch den js-controller? Ja oder Nein? Was sagt "top"?
      ja, laut top/htop ist es js-controller.

      > Wieviele States und Objekte hast Du (Wird im Admin oben Rechts unter Objekte angezeigt).
      Objekte: 20905, Zustände: 11313

      > Nutzt Du Redis um die States zu speichern??
      Nope, alles default.

      > Wo wird gespeichert? SD-Karte? Geht es der noch gut?
      iSCSI Mount auf einem Synology Nas.

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

        @pxstd:

        > Wieviele States und Objekte hast Du (Wird im Admin oben Rechts unter Objekte angezeigt).
        Objekte: 20905, Zustände: 11313

        > Nutzt Du Redis um die States zu speichern??
        Nope, alles default. `

        Dann ist das Dein Grund 🙂

        Im "default" stellt der js-controller die "In Memory DB" für alle Objekte und States bereit, persistiert das regelmäßig auf Platte, Handelt alle Subscriptions und so. Bei einer so hohen Anzahl an States die sich auch noch regelmäßig ändern ist da einiges los. Nodejs ist per definieion "single threaded", daher siehst Du das. Je nachdem wie Performant der iSCSI Zugriff ist kann auch I/O Wait noch eine Rolle spielen wodurch die Last gefühlt noch höher wird.

        Ab 10.000 States spätestens ist empfohlen das State-Handling auf Redis umzustellen. Redis ist ein In-memory-Store der exakt dafür hochperformant geschrieben ist. ggf kannst Du den auch af der NAS laufen haben oder mit auf dem ioBroker Host.

        Bei mir hat diese Umstellung große Effekte gehabt.

        Kannst auch im FOrum suchen, da gab es mal Performanceanalysen von Redis vs js-controller-DBs.

        Ingo

        1 Reply Last reply Reply Quote 0
        • P
          pxstd last edited by

          Wow, okay. Für den Moment scheint das erstmal die Lösung zu sein.

          Alles, aber auch wirklich alles scheint wesentlich flüssiger zu laufen. Auch in der Admin.

          Verrückt. Ich beobachte das mal. Danke Ingo!

          Patrick

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

            Hallo,

            hab dies gerade gelesen. Ich halte für mich fest, dass ab 10k Datenpunkte man auf redis umsteigen soll ? Bin bei knapp 9k 😞 mhhh ich mal beobachten - gemerkt DANKE !

            1 Reply Last reply Reply Quote 0
            • P
              pxstd last edited by

              @Segway:

              Hallo,

              hab dies gerade gelesen. Ich halte für mich fest, dass ab 10k Datenpunkte man auf redis umsteigen soll ? Bin bei knapp 9k 😞 mhhh ich mal beobachten - gemerkt DANKE ! `

              Versuchs doch vielleicht einfach jetzt schon.

              Bei mir läuft alles virtualisiert, also no harm done.

              Snapshot => Umstellung => Checken.

              Wenn doof => Zurück, wenn nicht => freuen 🙂

              Wie gesagt - bei mir läuft gefühlt alles butterweicher.

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

                Mit redis kenne ich mich nullkommanull aus - da muss ich mich erst einlesen. Da haben andere Projekte aber noch Vorrang bei mir 🙂 zB meine smarte Teichfiltersteuerung - das wird ein etwas größeres und längeres Projekt

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

                  Laut Github relativ einfach zu installieren. Wird damit die Art wie in die DB geschrieben wird "verbessert" ?

                  Kann alles sonst so bleiben ? habe eine sql-DB am laufen

                  1 Reply Last reply Reply Quote 0
                  • P
                    pxstd last edited by

                    @Segway:

                    Laut Github relativ einfach zu installieren. Wird damit die Art wie in die DB geschrieben wird "verbessert" ?

                    Kann alles sonst so bleiben ? habe eine sql-DB am laufen `

                    Nee nee, Redis ist quasi eine alternative Art von Datenbank.

                    Ein sog. Key - Value Store der vorrangig im flüchtigen Speicher läuft um das ganze Performanter zu machen.

                    Also im Grunde installierst Du redis-server (je nach OS) und konfigurierst dann den State-Speicher vom iobroker um.

                    Das ist mit Null Aufwand verbunden.

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

                      sorry aber da blick ich nicht durch. Wo werden denn dann all meine Daten gespeichert ? Nicht mehr in der Sql DB auf meinem NAS ?

                      1 Reply Last reply Reply Quote 0
                      • Jeeper.at
                        Jeeper.at last edited by

                        Die ganzen States werden im Hauptspeicher gehalten. Dort sind Sie performanter. Sie werden meines Wissens nach nur selten in eine eigene DB geschrieben. Diese hat nichts mit deiner SQL zu tun. Deine historischen Werte sind nach wie vor an derselben Stelle.

                        Vorteil Redis: Performance, wenig Schreibzugriffe auf eine Raspi SD-Karte (verlängert das Leben ungemein).

                        Nachteil: Bei einem Stromausfall oder sonstigen abnormalen Zustand gehen dir die aktuellen Zustände verloren. Es bedeutet das IOBroker nicht mehr weiß ob es Fenster offen oder zu ist. Die States werden erst wieder bei einer Änderung in den Speicher geschrieben. (Um beim Beispiel zu bleiben, Fenster auf und zu und IOBroker weiß wieder da das Fenster zu ist.)

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

                          @Jeeper.at:

                          Sie werden meines Wissens nach nur selten in eine eigene DB geschrieben. `
                          Typisch alle 5 Minuten.
                          @Jeeper.at:

                          Bei einem Stromausfall oder sonstigen abnormalen Zustand gehen dir die aktuellen Zustände verloren. `
                          Maximal die, die sich in den letzten 5 Minuten vor Stromausfall geändert haben.

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

                            Ah okay, also mein Environment bleibt komplett unberührt ! Ich kann alles so weiter nutzen.

                            Im schlimmsten Fall habe ich 5 Minuten Datenverlust. Aber mein Nux hängt an einer USV also sollte das erledigt sein.

                            1 Reply Last reply Reply Quote 0
                            • Jeeper.at
                              Jeeper.at last edited by

                              @Paul, danke für die Präzisierung.

                              Top.

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

                                Also Redis geht auch nur mit 100 States, einen Effekt hat es aber je höher die Anzahl ist. Wir werden zukünftig bei 10k+ eine Hinweismeldung ausgeben.

                                Man kann Redis was die "Persistierung" (Wann schreibt er auf Platte) konfigurieren. Schau euch das mal an https://redis.io/topics/persistence

                                Wenn Ihr ne gescheite SSD/HDD habt empfehle ich sogar AOF als Variante weil Du dann keinen Datenverlust hast. Am Ende aber auch hier: backup nicht vergessen!! Das File liegt nicht im ioBroker-Verzeichnis!

                                Und aufpassen beim einspielen von Linux Updates. Ein Restart des Redis sorgt dafür das alle adapter neu starten weil Sie Ihre Verbindung verlieren. Ist aber handelbar.

                                Sonst ist der Switch auf Redis (ausser das initial halt alle States leer sind bis Sie einmalig geschrieben wurden) transparent. Also hier achtung bei eigenen JavaScripts die heimlich davon ausgehen das states Werte haben 🙂

                                1 Reply Last reply Reply Quote 0
                                • P
                                  pxstd last edited by

                                  @apollon77:

                                  Also hier achtung bei eigenen JavaScripts die heimlich davon ausgehen das states Werte haben 🙂 `

                                  Amen! 🙂

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

                                    @apollon77:

                                    Wenn Ihr ne gescheite SSD/HDD habt empfehle ich sogar AOF als Variante weil Du dann keinen Datenverlust hast. Am Ende aber auch hier: backup nicht vergessen!! Das File liegt nicht im ioBroker-Verzeichnis `

                                    Da hatte Paul53 Mal was im Forum geschrieben, wie man das umstellt, das Redis ins ioBroker-Verzeichnis Verzeichnis speichert

                                    Gesendet von iPad mit Tapatalk

                                    1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators last edited by

                                      Hab mir damals was notiert.

                                      Verstehe ich aber selber nicht mehr :oops:

                                      redis neu konfigurieren:
                                      
                                      	Damit beim ioBroker Backup auch die Redis mit gesichert wird:
                                      
                                      	in /etc/redis/redis.conf ab Zeile 236
                                      	# The filename where to dump the DB
                                      	dbfilename dump.rdb
                                      
                                      	ändern in:
                                      	dbfilename states.rdb
                                      
                                      	und
                                      	# Note that you must specify a directory here, not a file name.
                                      	dir /var/lib/redis
                                      
                                      	ändern in:
                                      	dir /opt/iobroker/iobroker-data
                                      
                                      	Zugriffsrechte der redis ändern:
                                      	in /lib/systemd/system/redis-server.service
                                      	ziemlich am Ende eine Zeile mit
                                      	ReadWriteDirectories=-/opt/iobroker/iobroker-data
                                      	hinzufügen.
                                      
                                      	noch einmal chmod 777 -R /opt/iobroker ausführen
                                      
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • Segway
                                        Segway last edited by

                                        Habe nun auf redis umgestellt …. ich teste / beobachte 🙂

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        538
                                        Online

                                        31.6k
                                        Users

                                        79.5k
                                        Topics

                                        1.3m
                                        Posts

                                        7
                                        20
                                        1125
                                        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