Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. ioBroker sehr hohe Diskwrites in Proxmox

    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

    ioBroker sehr hohe Diskwrites in Proxmox

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @Wildbill last edited by

      @wildbill sagte in ioBroker sehr hohe Diskwrites in Proxmox:

      Allerdings wohl auch nur, wenn es öfter neue Meldungen gibt was bei uns gerade der Fall war/ist

      dann werde ich das mal beobachten.
      Kann natürlich wirklich sein, da dann die DPs neu befüllt werden.
      Aber ist das so viel Info?

      BTW: ich habe die Karte nicht aktiviert

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

        @wildbill sagte: Wie oft wird die objects.json eigentich gespeichert, wenn sich an den Objekten gar nichts geändert hat?

        Gar nicht. Weshalb sollten konstante Objekte wiederholt gespeichert werden ?

        W 1 Reply Last reply Reply Quote 1
        • W
          Wildbill @paul53 last edited by Wildbill

          @paul53 Meiner Meinung nach gar nicht, deshalb meine Frage. Wenn also die objects.json neu gespeichert wird, dann ist das ein Zeichen, dass irgend ein Datenpunkt neu erstellt oder ein bestehender geändert wurde. Beim Dwd bin ich mir dann sicher, aber ich beobachte mal weiter.

          Gruß, Jürgen

          EDIT: @apollon77 hat das Issue soeben geschlossen, da es wohl eher ein Problem des JS-Controllers ist, der nicht prüft, ob States bereits existieren wenn sie mit setObject upgedated oder neu erstellt werden und auch speichert, wenn es gar keine Änderung gab. Auch dazu gibt es ein Issue, evtl. hilft das ja eh besser. Vermutlich ist es beim Syno-Adapter (den ich aber nicht habe) auch so, und bei vielen anderen auch.

          apollon77 1 Reply Last reply Reply Quote 0
          • JLeg
            JLeg @Wildbill last edited by

            @wildbill sagte in ioBroker sehr hohe Diskwrites in Proxmox:

            @homoran Ich hab das Issue aufgemacht, weil meine objects.json genau alle 15min (das war der DWD-Intervall) und zwar zu den jeweils eingestellten krummen Minuten (4, 19, 34, 49,) gespeichert wurde. Seit ich den DWD-Adapter mal angehalten habe, war zwischen zwei Speicherintervallen ca. eine dreiviertel Stunde, in der zeit hab ich im iobroker aber auch was gemacht. Also kein Verdacht sondern definitiv der DWD der da auf jeden Fall (auch) schuld ist.

            Ja, ist er - nach Abklemmen des WLED waren die nachfolgenden object.json-Änderungen tatsächlich auch bei mir vom DWD, kann man leicht sehen, wenn man sich die Unterschiede zwischen object.json und object.json.bak anzeigen lässt.

            W 1 Reply Last reply Reply Quote 0
            • W
              Wildbill @JLeg last edited by

              @jleg Womit lässt Du die Unterschiede anzeigen? Diffuse und jp sind bei mir an der Dateigröße gescheitert.

              Gruß, Jürgen

              JLeg Dr. Bakterius 2 Replies Last reply Reply Quote 0
              • crunchip
                crunchip Forum Testing Most Active @Homoran last edited by

                @homoran ja, seit dem update gibt es nur noch diese Meldung

                dwd.0	2021-01-23 17:00:07.039	warn	(1763) slow connection to objects DB. Still waiting ...
                
                1 Reply Last reply Reply Quote 0
                • JLeg
                  JLeg @Wildbill last edited by

                  @wildbill sagte in ioBroker sehr hohe Diskwrites in Proxmox:

                  @jleg Womit lässt Du die Unterschiede anzeigen? Diffuse und jp sind bei mir an der Dateigröße gescheitert.

                  Gruß, Jürgen

                  jq - damit jeweils objects.json u. objects.json.bak konvertieren (nach "lesbar"), und per diff dann einfach anzeigen.

                  jq . objects.json > objects.pretty.json
                  jq . objects.json.bak > objects.pretty.json.bak
                  diff -u objects.pretty.json objects.pretty.json.bak
                  

                  Der oben erwähnte Fehler im js-controller lässt sich auch gut erkennen, denn es lässt sich oft auch beobachten, dass objects.json zwar neu geschrieben wurde, die beiden Dateien aber 100% identisch sind.

                  1 Reply Last reply Reply Quote 1
                  • Dr. Bakterius
                    Dr. Bakterius Most Active @Wildbill last edited by

                    @wildbill Ich habe die Dateien nach Windows kopiert und mit Notepad++ plus Compare-Plugin verglichen. Benötigt bei entsprechenden Dateigrößen aber auch Zeit. Und ich konnte zwischen aktueller Datei und Backup auch keine Unterschiede feststellen. Es scheint, dass es reicht die Objects nur "anzugreifen" um ein Speichern anzustoßen.

                    Homoran 1 Reply Last reply Reply Quote 2
                    • Homoran
                      Homoran Global Moderator Administrators @Dr. Bakterius last edited by

                      @dr-bakterius sagte in ioBroker sehr hohe Diskwrites in Proxmox:

                      mit Notepad++ plus Compare-Plugin verglichen

                      Danke für den Tipp - soeben installiert!

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

                        @wildbill sagte in ioBroker sehr hohe Diskwrites in Proxmox:

                        EDIT: @apollon77 hat das Issue soeben geschlossen, da es wohl eher ein Problem des JS-Controllers ist, der nicht prüft, ob States bereits existieren wenn sie mit setObject upgedated oder neu erstellt werden und auch speichert, wenn es gar keine Änderung gab.

                        ... also wenn das aus meiner Antwort bei Dir angekommen ist dann hast Du es falsch verstanden!

                        Ein Objekt mit einem neuen "geändert am" Zeitstempel ist ein geändertes Objekt. Die Diskussion ob das so Sinn macht und ob das ein neues schreiben triggern sollte - das ist das was wir diskutieren müssen ... Gibt mehrere Blickrichtungen darauf!

                        paul53 JLeg W Dr. Bakterius 4 Replies Last reply Reply Quote 2
                        • paul53
                          paul53 @apollon77 last edited by

                          @apollon77 sagte: Ein Objekt mit einem neuen "geändert am" Zeitstempel ist ein geändertes Objekt.

                          Das sehe ich auch so. Es sollte Aufgabe des Adapters sein, nur geänderte oder neue Objekte zu schreiben.

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

                            @apollon77 sagte in ioBroker sehr hohe Diskwrites in Proxmox:

                            Ein Objekt mit einem neuen "geändert am" Zeitstempel ist ein geändertes Objekt. Die Diskussion ob das so Sinn macht und ob das ein neues schreiben triggern sollte - das ist das was wir diskutieren müssen ... Gibt mehrere Blickrichtungen darauf!

                            Keine Frage, aber, die gerade diskutierten Fälle waren solche, bei denen es keinerlei Änderungen in der objects.json gab (also auch keine "ts"-Änderungen), aber trotzdem geschrieben wurde. D.h. objects.json und objects.json.bak sind exakt identisch. Die einzigen "Änderungen" sind in diesem Fall der Zeitstempel der beiden Dateien... 😉
                            Ich habe verstanden, dass das ursächlich an Adaptern liegen dürfte - die Frage wäre aber imo, ob es nicht "oben drüber" jemanden (Objektdatei-Schreibroutine) gibt, der das abfangen (und verwerfen) könnte?

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

                              @paul53 das ist aber nicht so einfach oder viel Logik in jedem Adapter. Vor allem crib adapter haben dieses Problem weil sie jedes Mal alles prüfen müssen. Deswegen Überlegen wir was wir da tun können 😉 das Thema hat’s aber nicht in den 3.2er Controller geschafft. 3.3 dann vllt.

                              1 Reply Last reply Reply Quote 1
                              • W
                                Wildbill @apollon77 last edited by

                                @apollon77 OK, möglicherweise habe ich da einen Denkfehler oder ein Verständnissproblem. Aber wie @JLeg schrieb: Wenn es KEINE Änderungen an den Objekten selbst gibt und von einem bestehenden Objekt sich nur der Zeitstempel ändert, weil es 1:1 von einem Adapter oder Skript nochmals "neu" erstellt wurde und sich somit nur der Zeitstempel ändert, dann verstehe ich nicht ganz, warum das dann neu gespeichert werden sollte. Gibt es dafür Anwendungsfälle oder eine schlüssige Begründung oder weil, wie Du geschrieben hast, alles jedes Mal komplett geprüft werden muss und die Systemlast dadurch zu stark steigen könnte? Ansonsten bin ich da auch der Meinung, der Controller sollte das eher abfangen. Etwas mehr Last sehe ich (zumindest auf eine potenten System abseits der Raspi&Co) als unkritischer als zu oft stattfindende (unnötige?!) Schreibzugriff auf die objects.json.
                                Würde da das Umstellen der Objekte auf redis (die states habe ich schon auf redis) etwas verbessern? Meine objects.json hat aktuell etwas über 15MB, landen da bei redis dann auch nur die "Änderungen" und es werden nur die paar kB geschrieben, die sich geändert haben?

                                Gruss, Jürgen

                                apollon77 1 Reply Last reply Reply Quote 0
                                • Dr. Bakterius
                                  Dr. Bakterius Most Active @apollon77 last edited by

                                  @apollon77 sagte in ioBroker sehr hohe Diskwrites in Proxmox:

                                  Ein Objekt mit einem neuen "geändert am" Zeitstempel ist ein geändertes Objekt. Die Diskussion ob das so Sinn macht und ob das ein neues schreiben triggern sollte - das ist das was wir diskutieren müssen ...

                                  Okay, das erklärt einiges. Was bleibt ist die Frage, warum die Timestamps überhaupt in den objects und nicht in den states gespeichert werden?

                                  apollon77 1 Reply Last reply Reply Quote 0
                                  • apollon77
                                    apollon77 @Dr. Bakterius last edited by

                                    @dr-bakterius naja weil der timestamp im
                                    Objekt quasi die Version desselben ist (Objekt = die Definition). Der state hat den timestamp
                                    Mit der letzten zustandsänderung des States.

                                    Dr. Bakterius 1 Reply Last reply Reply Quote 0
                                    • apollon77
                                      apollon77 @Wildbill last edited by

                                      @wildbill hängt davon ab wie du die persistenz in deiner redis konfig machst. Bei rdb persistenz wird auch alles geschrieben in den definierten Zyklen. Bei aof werden Änderungen nur angehängt und dann regelmäßig konsolidiert.

                                      Effektiv wie gesagt kann man das Setting writeFileInterval bei den Dbs anpassen.

                                      1 Reply Last reply Reply Quote 1
                                      • Dr. Bakterius
                                        Dr. Bakterius Most Active @apollon77 last edited by

                                        @apollon77 sagte in ioBroker sehr hohe Diskwrites in Proxmox:

                                        weil der timestamp im Objekt quasi die Version desselben ist (Objekt = die Definition).

                                        Bedeutet das, dass hier der Adapter jeweils die bereits vorhandenen Objekte neu erstellt und daher der Timestamp der Objekte neu erstellt wird und sich daher unterscheidet? Der Entwickler müsste den Adapter also dahingehend anpassen, dass nur nicht vorhandene Objekte erstellt werden. Habe ich das richtig verstanden?

                                        apollon77 1 Reply Last reply Reply Quote 0
                                        • apollon77
                                          apollon77 @Dr. Bakterius last edited by

                                          @dr-bakterius wie gesagt aktuell ist das sehr schwer und aus dem Grund nutzen Adapter üblicherweise extendObject. In jedem Adapter hier mega viel Logik einzubauen macht keinen echten Sinn. Aber ja adapter die hier viel so machen könnten etwas ändern.

                                          Generell aber:
                                          Ja, das Thema ist bekannt und seid mindestens 1-2 Jahren genau so 😉 es gibt ein issue im js-Controller das zu optimieren und den Work around das writeFileInterval anzupassen (mit kleineren Risiken falls der Controller crasht was eher selten vorkommt). Wir überlegen mal für Controller 3.3 ob wir eine Lösung finden

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

                                            Ps: aber ja crib adapter sind in meinen Augen die einzigen die so ein behavior an den Tag legen dürfen ;-). Deamon Adapter sollten es nicht tun. Und wenn doch ist es bei denen ein issue Wert.

                                            Dr. Bakterius 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

                                            925
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            35
                                            405
                                            54181
                                            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