Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Error/Bug
  4. [Gelöst] Speicherlecks im ioBroker?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

[Gelöst] Speicherlecks im ioBroker?

Geplant Angeheftet Gesperrt Verschoben Gelöst Error/Bug
speicherverbrauchadapter speicherverbrauch
51 Beiträge 10 Kommentatoren 4.9k Aufrufe 8 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • OliverIOO OliverIO

    @LoxDUS
    parallel kannst du mal den artikel lesen. insbesondere den abschnitt mit timers und callbacks.
    evtl hast du da in deinen skripten etwas davon eingebaut.
    https://auth0.com/blog/four-types-of-leaks-in-your-javascript-code-and-how-to-get-rid-of-them/

    L Offline
    L Offline
    LoxDUS
    schrieb am zuletzt editiert von
    #30

    @OliverIO
    habe mir den Artikel mal durchgelesen. Kann mir durchaus vorstellen das in meinem Code da einige Fälle enthalten sind die zutreffen. Sehe aber im Moment den Wald vor lauter Bäumen nicht mehr:

    Habe z.B. folgenden Code der den Ventilator im WC steuert.
    Über den Parameter t kann ich beim Aufrufen z.B. mitgeben ob der Aufruf von dem Bewegungsmelder im WC kommt.
    Über einen Dialog in der VIS, kann ich den Modus für den Ventilator einstellen: 0, 1, auto (siehe Zeile 5)

    
    var LTVentilatorGaesteWC; // Nachlauftimer für Ventilator
    function VentilatorWC(t)
    {   var sLichtDecke = getState(DE_K_LGAST_1).val;   // Deckenlampe WC
        var mVent = getState(MVentWC).val; // Modus für Ventilator
        var sVent = getState(DE_K_VGAST_1).val; // Status Ventilator
    
        switch(mVent)
        {   case 0:  // Ventilator AUS
                setState(DE_K_VGAST_1, false);
                clearTimeout(LTVentilatorGaesteWC); // Timer beenden
            break;
            case 1:  // Ventilator EIN
                setState(DE_K_VGAST_1, true);
                clearTimeout(LTVentilatorGaesteWC); // Timer beenden
            break;
            case 2:  // Ventilator Automatisch steuern
                if(sLichtDecke==true || t==2)
                {   setState(DE_K_VGAST_1, true); // Ventilator wird eingeschaltet sobald ein Licht eingeschaltet wird oder der Bewegungmelder schaltet
                    if(t!=2)
                    {   clearTimeout(LTVentilatorGaesteWC); // Timer beenden
                    } else
                    {   // Befehl kommt von Bewegungsmelder den Ventilator einzuschalten .. wird immer wieder neu getriggert (teilweise im Sekundenabstand je nachdem wieviel sich der Gast bewegt)
                        clearTimeout(LTVentilatorGaesteWC); // Timer beenden und anschließend neu setzen (solange jemand im WC soll der Ventilator laufen)
                        LTVentilatorGaesteWC = setTimeout(function(){setState(DE_K_VGAST_1, false)}, 360000); // Nach 6Minuten ausschalten
                    }
                } else
                {   if(sVent == true)  //Ist Ventilator an?
                    {   // Ventilator ist an und soll ausgeschaltet werden. Jetzt die Nachlaufzeit abwarten und dann ausschalten
                        LTVentilatorGaesteWC = setTimeout(function(){setState(DE_K_VGAST_1, false)}, 360000); // Nach 6Minuten ausschalten
                    }
                }
            break;
        }
    }
    
    

    Wenn ich mir den Code jetzt genauer ansehe, auch mit dem Hintergrundwissen aus dem von Dir verlinkten Artikel, vermute ich jetzt, dass die Callback-Funktion aus Zeile 25 und 30 doch jedes mal, wenn ich den Timer eigentlich neu Triggern möchte (mit der Kombination von clearTimeout() (Zeile 24) und setTimeout() (Zeile25) ) im Speicher bleibt und es keine Referenz mehr darauf gibt und mir so den Speicher voll donnere weil der bei der Garbage Collection nicht erfasst wird...?
    Zusätzlich habe ich gaaaaaanz viele const definitionen am Anfang jedes Scriptes um die ganzen Datenpunkte "oben" zu definieren (ähnlich #define in C-Dateien), Beispiel:

    ...
    const DG_K_LPHBE_2 = 'hm-rpc.1.OEQ0862609.15.STATE';
    const DG_K_LPHBE_1 = 'hm-rpc.1.OEQ0862609.16.STATE';
    const DG_K_SPHBE_1 = 'hm-rpc.1.OEQ0862609.19.STATE';
    ...
    

    klaut das viel Ram weil es "globale Variablen" sind? Kann ich mir nicht vorstellen...

    @Thomas-Braun
    Du hast glaube ich recht. mit htop konnte ich sehen das sich der io.javascript immer weiter aufgebaut hat. Ich habe jetzt mal einen Großteil der Scripte beendet und nur noch die lebensnotwendigen Scripte am laufen - und diese auch total runtergestript. Im Moment steht der javascript wert bei 205M.
    96a12df3-b04d-401c-98fb-5f04ccf52a98-image.png
    mal schauen wie er in ein paar Stunden aussieht.

    @Thomas-Braun und @OliverIO
    Ich befürchte fast das ihr recht habt mit den javascript. Ich komme aus der C-Programmierung für Microcontroller, JavaScript ist mir manchmal zu suspekt wie es mit Speicher und den ganzen Objekt-Jedöns umgeht.

    Vielen Dank schonmal,

    Artur

    OliverIOO 1 Antwort Letzte Antwort
    0
    • L LoxDUS

      @OliverIO
      habe mir den Artikel mal durchgelesen. Kann mir durchaus vorstellen das in meinem Code da einige Fälle enthalten sind die zutreffen. Sehe aber im Moment den Wald vor lauter Bäumen nicht mehr:

      Habe z.B. folgenden Code der den Ventilator im WC steuert.
      Über den Parameter t kann ich beim Aufrufen z.B. mitgeben ob der Aufruf von dem Bewegungsmelder im WC kommt.
      Über einen Dialog in der VIS, kann ich den Modus für den Ventilator einstellen: 0, 1, auto (siehe Zeile 5)

      
      var LTVentilatorGaesteWC; // Nachlauftimer für Ventilator
      function VentilatorWC(t)
      {   var sLichtDecke = getState(DE_K_LGAST_1).val;   // Deckenlampe WC
          var mVent = getState(MVentWC).val; // Modus für Ventilator
          var sVent = getState(DE_K_VGAST_1).val; // Status Ventilator
      
          switch(mVent)
          {   case 0:  // Ventilator AUS
                  setState(DE_K_VGAST_1, false);
                  clearTimeout(LTVentilatorGaesteWC); // Timer beenden
              break;
              case 1:  // Ventilator EIN
                  setState(DE_K_VGAST_1, true);
                  clearTimeout(LTVentilatorGaesteWC); // Timer beenden
              break;
              case 2:  // Ventilator Automatisch steuern
                  if(sLichtDecke==true || t==2)
                  {   setState(DE_K_VGAST_1, true); // Ventilator wird eingeschaltet sobald ein Licht eingeschaltet wird oder der Bewegungmelder schaltet
                      if(t!=2)
                      {   clearTimeout(LTVentilatorGaesteWC); // Timer beenden
                      } else
                      {   // Befehl kommt von Bewegungsmelder den Ventilator einzuschalten .. wird immer wieder neu getriggert (teilweise im Sekundenabstand je nachdem wieviel sich der Gast bewegt)
                          clearTimeout(LTVentilatorGaesteWC); // Timer beenden und anschließend neu setzen (solange jemand im WC soll der Ventilator laufen)
                          LTVentilatorGaesteWC = setTimeout(function(){setState(DE_K_VGAST_1, false)}, 360000); // Nach 6Minuten ausschalten
                      }
                  } else
                  {   if(sVent == true)  //Ist Ventilator an?
                      {   // Ventilator ist an und soll ausgeschaltet werden. Jetzt die Nachlaufzeit abwarten und dann ausschalten
                          LTVentilatorGaesteWC = setTimeout(function(){setState(DE_K_VGAST_1, false)}, 360000); // Nach 6Minuten ausschalten
                      }
                  }
              break;
          }
      }
      
      

      Wenn ich mir den Code jetzt genauer ansehe, auch mit dem Hintergrundwissen aus dem von Dir verlinkten Artikel, vermute ich jetzt, dass die Callback-Funktion aus Zeile 25 und 30 doch jedes mal, wenn ich den Timer eigentlich neu Triggern möchte (mit der Kombination von clearTimeout() (Zeile 24) und setTimeout() (Zeile25) ) im Speicher bleibt und es keine Referenz mehr darauf gibt und mir so den Speicher voll donnere weil der bei der Garbage Collection nicht erfasst wird...?
      Zusätzlich habe ich gaaaaaanz viele const definitionen am Anfang jedes Scriptes um die ganzen Datenpunkte "oben" zu definieren (ähnlich #define in C-Dateien), Beispiel:

      ...
      const DG_K_LPHBE_2 = 'hm-rpc.1.OEQ0862609.15.STATE';
      const DG_K_LPHBE_1 = 'hm-rpc.1.OEQ0862609.16.STATE';
      const DG_K_SPHBE_1 = 'hm-rpc.1.OEQ0862609.19.STATE';
      ...
      

      klaut das viel Ram weil es "globale Variablen" sind? Kann ich mir nicht vorstellen...

      @Thomas-Braun
      Du hast glaube ich recht. mit htop konnte ich sehen das sich der io.javascript immer weiter aufgebaut hat. Ich habe jetzt mal einen Großteil der Scripte beendet und nur noch die lebensnotwendigen Scripte am laufen - und diese auch total runtergestript. Im Moment steht der javascript wert bei 205M.
      96a12df3-b04d-401c-98fb-5f04ccf52a98-image.png
      mal schauen wie er in ein paar Stunden aussieht.

      @Thomas-Braun und @OliverIO
      Ich befürchte fast das ihr recht habt mit den javascript. Ich komme aus der C-Programmierung für Microcontroller, JavaScript ist mir manchmal zu suspekt wie es mit Speicher und den ganzen Objekt-Jedöns umgeht.

      Vielen Dank schonmal,

      Artur

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #31

      @LoxDUS
      Prüfe mal den Zweig bei case 2:
      Da stehen ja einige IFs.
      Das kommt mir so vor, als das es hier Fälle gibt, bei denen clearTimeout vor erneutem Setzen des Timers nicht aufgelöst wird. Speziell da wo sVent==true ist

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      L 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @LoxDUS
        Prüfe mal den Zweig bei case 2:
        Da stehen ja einige IFs.
        Das kommt mir so vor, als das es hier Fälle gibt, bei denen clearTimeout vor erneutem Setzen des Timers nicht aufgelöst wird. Speziell da wo sVent==true ist

        L Offline
        L Offline
        LoxDUS
        schrieb am zuletzt editiert von LoxDUS
        #32

        So, nach weiteren 6h sieht es so aus, dass der io.javascript sich nicht weiter vergrößert hat:
        9e97accc-8802-48a8-8c2f-f21bdce599fc-image.png
        Es ist ja aber auch nicht viel hier im Haus passiert während der Nacht.

        @OliverIO
        Du hast Recht. das ist alles Murks wie ich das gemacht habe. Ich werde mir heute mal einen besseren Code überlegen. Aber vielleicht darf ich auf Deinen Erfahrungsschatz mit Javascript und Timern zurück greifen (Ich habe ganz viele Timer im Einsatz)

        Wenn ich es richtig verstanden habe, so ist der gültigkeitsbereich eines Objektes (in diesem Fall eines Timer-Objektes), ähnlich wie in C oder C++, doch wenn ich es in einer Funktion deklariere nur solange die Funktion existiert (ausgeführt wird). Sobald die Funktion verlassen wird, kann der Speicher den das Objekt belegt freigegeben werden (es sein denn man baut sich die Callback-Funktionen. Die werden erst, z.B. bei Timern aufgerufen wenn der Timer abläuft und verlieren dann ihre Gültigkeit.
        Aus diesem Grund habe ich das Timer-Objekt ausserhalb der Funktionen definiert. Mein Verständnis ist nun das mit ClearTimeout() das zuvor erzeugte Timer-Objekt gelöscht wird und zwar auch die zuvor erzeugten Callback Funktionen. Wenn ich anschließend mit setTimeout() das Timer Objekt neu definiere , wird auch die Callback Funktion neu erstellt.
        Nehmen wir mal folgendes Konstrukt an:

        var TimerObjekt;
        function foo1()
        {  clearTimeout(TimerObjekt);
           TimerObjekt = setTimeout(function(){ 
                                     // Hier jetzt irgendwas machen
                                    var Ein_Neues_Callback_Objekt = 'Ich bin neu';
                                    }, 1000);
        }
        
        function foo2()
        {  clearTimeout(TimerObjekt);
        }
        

        wird, wenn ich zunächst foo1() aufrufe und innerhalb der 1000ms dann foo2() die zuvor definierte Callbackfunktion mit all seinen Child Objekten (Ein_Neues_Callback_Objekt) aufgeräumt und für den Garbage Collector sichtbar oder habe ich jetzt eine Leiche im "globalen" Speicher die als Speicherleck für immer da bleiben?

        Oder anders gefragt: Muss ich wenn ich einen Timer neu setzen will (also retriggern will) vorher ein clearTimeout() machen damit die "alte" Callback Funktion gelöscht wird?
        Edit 28.12.2020 Artur: Habe gerade unter
        Stack Overflow
        diesen Post gelesen. Demnach wird durch clearTimeout() die Callbackfunktion vom Stack gelöscht. Aber verschwinden dann auch die Referenzen der ganzen Child-Objekte in der Callback Funktion?

        Wie löst ihr das mit Timern eleganter?
        In Deinem Link mit den Speicherlecks steht ja sowas wie das man auch die einzelnen ChildObjekte löschen soll. In diesem Fall oben also Ein_Neues_Callback_Objekt.

        ... Oh man, ich weiß, das geht hier wahrscheinlich zu weit und ich werde mich mal ein wenig in Javascript Foren austoben.

        Vielen Dank,

        Artur

        L 1 Antwort Letzte Antwort
        0
        • L LoxDUS

          So, nach weiteren 6h sieht es so aus, dass der io.javascript sich nicht weiter vergrößert hat:
          9e97accc-8802-48a8-8c2f-f21bdce599fc-image.png
          Es ist ja aber auch nicht viel hier im Haus passiert während der Nacht.

          @OliverIO
          Du hast Recht. das ist alles Murks wie ich das gemacht habe. Ich werde mir heute mal einen besseren Code überlegen. Aber vielleicht darf ich auf Deinen Erfahrungsschatz mit Javascript und Timern zurück greifen (Ich habe ganz viele Timer im Einsatz)

          Wenn ich es richtig verstanden habe, so ist der gültigkeitsbereich eines Objektes (in diesem Fall eines Timer-Objektes), ähnlich wie in C oder C++, doch wenn ich es in einer Funktion deklariere nur solange die Funktion existiert (ausgeführt wird). Sobald die Funktion verlassen wird, kann der Speicher den das Objekt belegt freigegeben werden (es sein denn man baut sich die Callback-Funktionen. Die werden erst, z.B. bei Timern aufgerufen wenn der Timer abläuft und verlieren dann ihre Gültigkeit.
          Aus diesem Grund habe ich das Timer-Objekt ausserhalb der Funktionen definiert. Mein Verständnis ist nun das mit ClearTimeout() das zuvor erzeugte Timer-Objekt gelöscht wird und zwar auch die zuvor erzeugten Callback Funktionen. Wenn ich anschließend mit setTimeout() das Timer Objekt neu definiere , wird auch die Callback Funktion neu erstellt.
          Nehmen wir mal folgendes Konstrukt an:

          var TimerObjekt;
          function foo1()
          {  clearTimeout(TimerObjekt);
             TimerObjekt = setTimeout(function(){ 
                                       // Hier jetzt irgendwas machen
                                      var Ein_Neues_Callback_Objekt = 'Ich bin neu';
                                      }, 1000);
          }
          
          function foo2()
          {  clearTimeout(TimerObjekt);
          }
          

          wird, wenn ich zunächst foo1() aufrufe und innerhalb der 1000ms dann foo2() die zuvor definierte Callbackfunktion mit all seinen Child Objekten (Ein_Neues_Callback_Objekt) aufgeräumt und für den Garbage Collector sichtbar oder habe ich jetzt eine Leiche im "globalen" Speicher die als Speicherleck für immer da bleiben?

          Oder anders gefragt: Muss ich wenn ich einen Timer neu setzen will (also retriggern will) vorher ein clearTimeout() machen damit die "alte" Callback Funktion gelöscht wird?
          Edit 28.12.2020 Artur: Habe gerade unter
          Stack Overflow
          diesen Post gelesen. Demnach wird durch clearTimeout() die Callbackfunktion vom Stack gelöscht. Aber verschwinden dann auch die Referenzen der ganzen Child-Objekte in der Callback Funktion?

          Wie löst ihr das mit Timern eleganter?
          In Deinem Link mit den Speicherlecks steht ja sowas wie das man auch die einzelnen ChildObjekte löschen soll. In diesem Fall oben also Ein_Neues_Callback_Objekt.

          ... Oh man, ich weiß, das geht hier wahrscheinlich zu weit und ich werde mich mal ein wenig in Javascript Foren austoben.

          Vielen Dank,

          Artur

          L Offline
          L Offline
          LoxDUS
          schrieb am zuletzt editiert von
          #33

          Erst mal vielen Dank an @Thomas-Braun und @OliverIO !
          Meine Speicherlecks kommen sicherlich aus meinen Javascript Programmen.
          So wie ich es jetzt verstehe ist/war das Problem das die Speicherlecks durch die z.T. fehlerhafte Nutzung von Timer Funktionen entstehen. Es werden Objekte erzeugt die plötzlich keine Referenz mehr haben und auch durch den Garbagne Collector nicht gefunden werden. Dadurch wird immer mehr Speicher verbraucht. Aktuell sieht es "normal aus"
          fb0add06-9372-4dba-a7e1-f9c7000716aa-image.png
          Ca. in der Mitte des Diagramms bin ich auf mein "Fallbacksystem" mit den zusätzlichen Einstellungen die mir @Thomas-Braun empfohlen hat (Runlevel ändern) umgezogen ca. 11Uhr. Da sich der Speicherverbrauch aber trotzdem gesteigert hat (Man sieht das an der roten Linie (io.Javascript) dort versucht der garbage Collector ein paar mal aufzuräumen) habe ich dann um ca. 0:00Uhr viele meiner Javascript Programm gestoppt. Seit dem Zeitpunkt ist es recht ruhig in dem Javascript-Instanzen geworden (schöne glatte Linie). über "htop" sehe ich das sich der io.Javascript Prozess nicht mehr Speicher klaut und stabil ist. Das System ist jetzt seit einigen Stunden bei ca. 26% freiem Speicher 🙂 :

          Ich werde später ioBroker nochmal neu durchstarten und dann Schritt für Schritt die ganzen Javascripte nach möglichen Speicherlecks durchforsten und korrigieren.

          Vielleicht noch eine letzte Frage:
          Wie löst ihr das in euren Programmen wenn ihr retriggerbare Timer für z.B. Lichter im Treppenhaus die nach einer gewissen Zeit wieder ausgehen sollen, aber immer wieder neu getriggert werden sollen?

          Vielen Dank nachmal an alle Mitwirkenden.

          Artur

          K OliverIOO 2 Antworten Letzte Antwort
          0
          • L LoxDUS

            Erst mal vielen Dank an @Thomas-Braun und @OliverIO !
            Meine Speicherlecks kommen sicherlich aus meinen Javascript Programmen.
            So wie ich es jetzt verstehe ist/war das Problem das die Speicherlecks durch die z.T. fehlerhafte Nutzung von Timer Funktionen entstehen. Es werden Objekte erzeugt die plötzlich keine Referenz mehr haben und auch durch den Garbagne Collector nicht gefunden werden. Dadurch wird immer mehr Speicher verbraucht. Aktuell sieht es "normal aus"
            fb0add06-9372-4dba-a7e1-f9c7000716aa-image.png
            Ca. in der Mitte des Diagramms bin ich auf mein "Fallbacksystem" mit den zusätzlichen Einstellungen die mir @Thomas-Braun empfohlen hat (Runlevel ändern) umgezogen ca. 11Uhr. Da sich der Speicherverbrauch aber trotzdem gesteigert hat (Man sieht das an der roten Linie (io.Javascript) dort versucht der garbage Collector ein paar mal aufzuräumen) habe ich dann um ca. 0:00Uhr viele meiner Javascript Programm gestoppt. Seit dem Zeitpunkt ist es recht ruhig in dem Javascript-Instanzen geworden (schöne glatte Linie). über "htop" sehe ich das sich der io.Javascript Prozess nicht mehr Speicher klaut und stabil ist. Das System ist jetzt seit einigen Stunden bei ca. 26% freiem Speicher 🙂 :

            Ich werde später ioBroker nochmal neu durchstarten und dann Schritt für Schritt die ganzen Javascripte nach möglichen Speicherlecks durchforsten und korrigieren.

            Vielleicht noch eine letzte Frage:
            Wie löst ihr das in euren Programmen wenn ihr retriggerbare Timer für z.B. Lichter im Treppenhaus die nach einer gewissen Zeit wieder ausgehen sollen, aber immer wieder neu getriggert werden sollen?

            Vielen Dank nachmal an alle Mitwirkenden.

            Artur

            K Offline
            K Offline
            klassisch
            Most Active
            schrieb am zuletzt editiert von klassisch
            #34

            @LoxDUS sagte in Speicherlecks im ioBroker?:

            Wie löst ihr das in euren Programmen wenn ihr retriggerbare Timer für z.B. Lichter im Treppenhaus die nach einer gewissen Zeit wieder ausgehen sollen, aber immer wieder neu getriggert werden sollen?

            1. Die direkte Antwort wird Dir nicht gefallen: Ich nutze das z.B. in der Küche mit Retriggerung durch einen Bewegungsmelder.
              Aber da habe ich einen Shelly Schalter verbaut und bürde diesem die Timeraufgabe auf. Der wird so konfiguriert, daß er nach x Minuten ausgeht. Wird Bewegung erkannt, dann sende ich ihm wieder ein Einschaltsignal. Das geht bei den Shelly gut, weil WiFi und damit spielt der Traffic (häufiges "unnötiges" Einschalten) keine so große Rolle. Bei Homematic wäre das nicht so gut.
              Edit: Dieser Teil der antwort mag lieblos klingen, ist aber so nicht gemeint. Ansteuerbare Aktoren haben meist eine auto-timout Funktion und die wird dann auch generell genutzt. Und wenn sie auf z.B. 8h gesetzt wird. Schadensbegrenung bei vergessenen Lichtern.

            2. Die folgende Antwort geht eher in die von Dir intendierte Richtung:
              Wo ich keine HW-Unterstützung habe, verwende ich etliche Watchdogs, all nach dem Strickmuster von @paul53 siehe dort: https://forum.iobroker.net/topic/8961/watchdog-fuer-sensoren-in-js-millis-odertimer-gesucht/2

            L 1 Antwort Letzte Antwort
            0
            • K klassisch

              @LoxDUS sagte in Speicherlecks im ioBroker?:

              Wie löst ihr das in euren Programmen wenn ihr retriggerbare Timer für z.B. Lichter im Treppenhaus die nach einer gewissen Zeit wieder ausgehen sollen, aber immer wieder neu getriggert werden sollen?

              1. Die direkte Antwort wird Dir nicht gefallen: Ich nutze das z.B. in der Küche mit Retriggerung durch einen Bewegungsmelder.
                Aber da habe ich einen Shelly Schalter verbaut und bürde diesem die Timeraufgabe auf. Der wird so konfiguriert, daß er nach x Minuten ausgeht. Wird Bewegung erkannt, dann sende ich ihm wieder ein Einschaltsignal. Das geht bei den Shelly gut, weil WiFi und damit spielt der Traffic (häufiges "unnötiges" Einschalten) keine so große Rolle. Bei Homematic wäre das nicht so gut.
                Edit: Dieser Teil der antwort mag lieblos klingen, ist aber so nicht gemeint. Ansteuerbare Aktoren haben meist eine auto-timout Funktion und die wird dann auch generell genutzt. Und wenn sie auf z.B. 8h gesetzt wird. Schadensbegrenung bei vergessenen Lichtern.

              2. Die folgende Antwort geht eher in die von Dir intendierte Richtung:
                Wo ich keine HW-Unterstützung habe, verwende ich etliche Watchdogs, all nach dem Strickmuster von @paul53 siehe dort: https://forum.iobroker.net/topic/8961/watchdog-fuer-sensoren-in-js-millis-odertimer-gesucht/2

              L Offline
              L Offline
              LoxDUS
              schrieb am zuletzt editiert von
              #35

              @klassisch
              Danke für die Antwort. Als Aktoren benutze ich einige Homematic Wired IO Module die keinerlei Zusatzfunktionen wie Timer o.ä. haben. Am Anfang hatte ich nur diese Wired Module. Auch die Javascripte waren in ioBroker noch überschaubar. Mit der Zeit sind dann verschiedenste Sensoren über Zigbee, Wlan und dem Funk-Homatic dazugekommen. Das sind dann die Bewegungsmelder die mittlerweile in jedem Flur oder Bad/WC in den Ecken kleben oder eben Temperatur/Luftfeuchtigkeit und Luftdrucksensoren.
              Mit diesen Sensoren sind dann auch die Javascripte bei mir immer komplexer geworden weil ich versucht habe jede Anmerkung der Familie ( "...Morgens soll die Zeit Licht-An-Zeit im Treppenhaus länger sein als Nachmittags..." usw.) irgendwie in die "Intelligenz" des Hauses einzuarbeiten. - Und genau das habe ich anscheinend in diesem Jahr total übertrieben (Man war ja mehr Zuhause 🙂 ...
              In vielen Fällen, wo ich Timer nutze mache ich das Ähnlich wie in dem von Dir geposteten Link beschrieben - Bis auf dsa ich bei einem clearTimeout() vorher nicht prüfe ob noch ein gültiges Objekt da hinterlegt ist (der Timer also noch läuft).
              Ich gehe jetzt durch meine Scripte und räume da mal auf. Dann sollte ich die Speicherlecks, die ich eingebaut habe, hoffentlich wegbekommen.

              Viele Grüße,

              Artur

              K 1 Antwort Letzte Antwort
              0
              • L LoxDUS

                @klassisch
                Danke für die Antwort. Als Aktoren benutze ich einige Homematic Wired IO Module die keinerlei Zusatzfunktionen wie Timer o.ä. haben. Am Anfang hatte ich nur diese Wired Module. Auch die Javascripte waren in ioBroker noch überschaubar. Mit der Zeit sind dann verschiedenste Sensoren über Zigbee, Wlan und dem Funk-Homatic dazugekommen. Das sind dann die Bewegungsmelder die mittlerweile in jedem Flur oder Bad/WC in den Ecken kleben oder eben Temperatur/Luftfeuchtigkeit und Luftdrucksensoren.
                Mit diesen Sensoren sind dann auch die Javascripte bei mir immer komplexer geworden weil ich versucht habe jede Anmerkung der Familie ( "...Morgens soll die Zeit Licht-An-Zeit im Treppenhaus länger sein als Nachmittags..." usw.) irgendwie in die "Intelligenz" des Hauses einzuarbeiten. - Und genau das habe ich anscheinend in diesem Jahr total übertrieben (Man war ja mehr Zuhause 🙂 ...
                In vielen Fällen, wo ich Timer nutze mache ich das Ähnlich wie in dem von Dir geposteten Link beschrieben - Bis auf dsa ich bei einem clearTimeout() vorher nicht prüfe ob noch ein gültiges Objekt da hinterlegt ist (der Timer also noch läuft).
                Ich gehe jetzt durch meine Scripte und räume da mal auf. Dann sollte ich die Speicherlecks, die ich eingebaut habe, hoffentlich wegbekommen.

                Viele Grüße,

                Artur

                K Offline
                K Offline
                klassisch
                Most Active
                schrieb am zuletzt editiert von
                #36

                @LoxDUS Ja, die alten HM-wired Geräte sind schon recht basic. Aber so lange sie laufen....

                [Teils-OT]
                Ja, das Optimierungsthema treibt uns um - sonst würde wir wohl nicht automatisieren. Als Vorschulbub hatte ich mal einen Unimog mit Anhänger, so ca. 4cm lang die einzelnen Teile. Aber damals eines meiner vornehmsten Spielzeuge, war halt eine andere Zeit. Zwischen Unimog und Hänger gab es eine Kupplung. Eine einfache Blechzunge. Manchmal hat die etwas geklemmt. Die habe ich so gebogen, daß sie viel besser ging. Aber noch nicht ganz perfekt. Also weiter gebogen und justiert. Bis die Blechzunge ab war. Eine damals sehr schmerzhafte, aber langfristig wertvolle Lehre fürs Leben: Irgendwann wird Optimierung kontraproduktiv. Seither beschäftigt mich immer die Frage "angemessen, gut genug?"
                Manchmal hat das Wort "fertig" was befreiendes 🙂

                L 1 Antwort Letzte Antwort
                2
                • K klassisch

                  @LoxDUS Ja, die alten HM-wired Geräte sind schon recht basic. Aber so lange sie laufen....

                  [Teils-OT]
                  Ja, das Optimierungsthema treibt uns um - sonst würde wir wohl nicht automatisieren. Als Vorschulbub hatte ich mal einen Unimog mit Anhänger, so ca. 4cm lang die einzelnen Teile. Aber damals eines meiner vornehmsten Spielzeuge, war halt eine andere Zeit. Zwischen Unimog und Hänger gab es eine Kupplung. Eine einfache Blechzunge. Manchmal hat die etwas geklemmt. Die habe ich so gebogen, daß sie viel besser ging. Aber noch nicht ganz perfekt. Also weiter gebogen und justiert. Bis die Blechzunge ab war. Eine damals sehr schmerzhafte, aber langfristig wertvolle Lehre fürs Leben: Irgendwann wird Optimierung kontraproduktiv. Seither beschäftigt mich immer die Frage "angemessen, gut genug?"
                  Manchmal hat das Wort "fertig" was befreiendes 🙂

                  L Offline
                  L Offline
                  LoxDUS
                  schrieb am zuletzt editiert von
                  #37

                  @klassisch
                  100%ige Zustimmung 😉
                  Ich hoffe das nach den Aufräumarbeiten in den Javascripten auch alles wieder stabil läuft.

                  1 Antwort Letzte Antwort
                  0
                  • L LoxDUS

                    Erst mal vielen Dank an @Thomas-Braun und @OliverIO !
                    Meine Speicherlecks kommen sicherlich aus meinen Javascript Programmen.
                    So wie ich es jetzt verstehe ist/war das Problem das die Speicherlecks durch die z.T. fehlerhafte Nutzung von Timer Funktionen entstehen. Es werden Objekte erzeugt die plötzlich keine Referenz mehr haben und auch durch den Garbagne Collector nicht gefunden werden. Dadurch wird immer mehr Speicher verbraucht. Aktuell sieht es "normal aus"
                    fb0add06-9372-4dba-a7e1-f9c7000716aa-image.png
                    Ca. in der Mitte des Diagramms bin ich auf mein "Fallbacksystem" mit den zusätzlichen Einstellungen die mir @Thomas-Braun empfohlen hat (Runlevel ändern) umgezogen ca. 11Uhr. Da sich der Speicherverbrauch aber trotzdem gesteigert hat (Man sieht das an der roten Linie (io.Javascript) dort versucht der garbage Collector ein paar mal aufzuräumen) habe ich dann um ca. 0:00Uhr viele meiner Javascript Programm gestoppt. Seit dem Zeitpunkt ist es recht ruhig in dem Javascript-Instanzen geworden (schöne glatte Linie). über "htop" sehe ich das sich der io.Javascript Prozess nicht mehr Speicher klaut und stabil ist. Das System ist jetzt seit einigen Stunden bei ca. 26% freiem Speicher 🙂 :

                    Ich werde später ioBroker nochmal neu durchstarten und dann Schritt für Schritt die ganzen Javascripte nach möglichen Speicherlecks durchforsten und korrigieren.

                    Vielleicht noch eine letzte Frage:
                    Wie löst ihr das in euren Programmen wenn ihr retriggerbare Timer für z.B. Lichter im Treppenhaus die nach einer gewissen Zeit wieder ausgehen sollen, aber immer wieder neu getriggert werden sollen?

                    Vielen Dank nachmal an alle Mitwirkenden.

                    Artur

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #38

                    @LoxDUS
                    Ich selbst habe ganz wenig Skripte.
                    Allerdings verwende ich in meinen Adapter einige Timer.
                    Das wichtigste ist, alle Timer nach Gebrauch oder auch beim beenden des programs/Skript aufzuräumen
                    Dadurch sorgst du, das Objekte oder Funktionen, die an den Timer gebunden sind, definitiv in den timerfunktionen aufgeräumt werden und zumindest dort keine Referenzen mehr existieren.

                    Hier mal noch ein weiterer Artikel auch mit ein paar Code Beispielen.
                    https://blog.appsignal.com/2020/05/06/avoiding-memory-leaks-in-nodejs-best-practices-for-performance.html

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    L 1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @LoxDUS
                      Ich selbst habe ganz wenig Skripte.
                      Allerdings verwende ich in meinen Adapter einige Timer.
                      Das wichtigste ist, alle Timer nach Gebrauch oder auch beim beenden des programs/Skript aufzuräumen
                      Dadurch sorgst du, das Objekte oder Funktionen, die an den Timer gebunden sind, definitiv in den timerfunktionen aufgeräumt werden und zumindest dort keine Referenzen mehr existieren.

                      Hier mal noch ein weiterer Artikel auch mit ein paar Code Beispielen.
                      https://blog.appsignal.com/2020/05/06/avoiding-memory-leaks-in-nodejs-best-practices-for-performance.html

                      L Offline
                      L Offline
                      LoxDUS
                      schrieb am zuletzt editiert von
                      #39

                      @OliverIO
                      Ich habe jetzt meine Scripte komplett aufgeräumt. Dabei ist mir aufgefallen das ich an vielen Stellen gerade die ganzen Timerobjekte nicht vernünftig mit clearTimeout() aufgeräumt habe. So habe ich glaube ich viele Objekte ins Nirvana geschickt und dort haben die sich im Speicher festgebissen.

                      Ich habe jetzt alle Scripte wieder am laufen und der Speicher dümpelt seit Stunden mit 66% frei vor sich hin.
                      83a03b7d-c28e-419e-aebc-2f3f0a2daed5-image.png

                      d8d890bb-8d35-4488-b66e-2ed5a1ec2403-image.png
                      (Die große Lücke kommt daher weil der SQL Datenbank zwischenzeitlich ausgestiegen ist weil ich den ioBroker neu gestartet hatte)

                      Vielen Dank nochmal für die nützlichen Hinweise.

                      Viele Grüße,

                      Artur

                      K 1 Antwort Letzte Antwort
                      2
                      • L LoxDUS

                        @OliverIO
                        Ich habe jetzt meine Scripte komplett aufgeräumt. Dabei ist mir aufgefallen das ich an vielen Stellen gerade die ganzen Timerobjekte nicht vernünftig mit clearTimeout() aufgeräumt habe. So habe ich glaube ich viele Objekte ins Nirvana geschickt und dort haben die sich im Speicher festgebissen.

                        Ich habe jetzt alle Scripte wieder am laufen und der Speicher dümpelt seit Stunden mit 66% frei vor sich hin.
                        83a03b7d-c28e-419e-aebc-2f3f0a2daed5-image.png

                        d8d890bb-8d35-4488-b66e-2ed5a1ec2403-image.png
                        (Die große Lücke kommt daher weil der SQL Datenbank zwischenzeitlich ausgestiegen ist weil ich den ioBroker neu gestartet hatte)

                        Vielen Dank nochmal für die nützlichen Hinweise.

                        Viele Grüße,

                        Artur

                        K Offline
                        K Offline
                        klassisch
                        Most Active
                        schrieb am zuletzt editiert von
                        #40

                        @LoxDUS vielen Dank für die schöne Aufarbeitung und die Rückmeldung.
                        Jetzt habe ich wenigstens eine Ahnung davon, was das clearTimeout soll. Habe das bisher nur nachgeplappert. Allerdings wohl auch nicht so streng, in manchen Skripten fehlt es noch. Da muß ich wohl nochmals ran.

                        HomoranH 1 Antwort Letzte Antwort
                        0
                        • K klassisch

                          @LoxDUS vielen Dank für die schöne Aufarbeitung und die Rückmeldung.
                          Jetzt habe ich wenigstens eine Ahnung davon, was das clearTimeout soll. Habe das bisher nur nachgeplappert. Allerdings wohl auch nicht so streng, in manchen Skripten fehlt es noch. Da muß ich wohl nochmals ran.

                          HomoranH Nicht stören
                          HomoranH Nicht stören
                          Homoran
                          Global Moderator Administrators
                          schrieb am zuletzt editiert von
                          #41

                          @klassisch sagte in Speicherlecks im ioBroker?:

                          Jetzt habe ich wenigstens eine Ahnung davon, was das clearTimeout soll.

                          das Problem ist, dass wenn der Timeout öfters gestartet wird kann ein clear timeout den Timeout nicht mehr stoppen, weil ja mehrere laufen

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          K 1 Antwort Letzte Antwort
                          0
                          • HomoranH Homoran

                            @klassisch sagte in Speicherlecks im ioBroker?:

                            Jetzt habe ich wenigstens eine Ahnung davon, was das clearTimeout soll.

                            das Problem ist, dass wenn der Timeout öfters gestartet wird kann ein clear timeout den Timeout nicht mehr stoppen, weil ja mehrere laufen

                            K Offline
                            K Offline
                            klassisch
                            Most Active
                            schrieb am zuletzt editiert von
                            #42

                            @Homoran Bei mir waren es Zeitverzögerungen ("Monoflops"), die allerdings nur selten gestartet wurde. einmal am Tag, einmal alle paar Tage oder Wochen. Bei 8GB merkt man da nichts.

                            HomoranH 1 Antwort Letzte Antwort
                            0
                            • K klassisch

                              @Homoran Bei mir waren es Zeitverzögerungen ("Monoflops"), die allerdings nur selten gestartet wurde. einmal am Tag, einmal alle paar Tage oder Wochen. Bei 8GB merkt man da nichts.

                              HomoranH Nicht stören
                              HomoranH Nicht stören
                              Homoran
                              Global Moderator Administrators
                              schrieb am zuletzt editiert von
                              #43

                              @klassisch sagte in Speicherlecks im ioBroker?:

                              Bei 8GB merkt man da nichts.

                              entscheidend ist, dass

                              @klassisch sagte in Speicherlecks im ioBroker?:

                              allerdings nur selten gestartet wurde

                              Und damit die Wahrscheinlichkeit, dass der Timeout vor dem nächsten Aufruf beendet ist, gegen 100% geht.

                              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                              1 Antwort Letzte Antwort
                              0
                              • Thomas BraunT Thomas Braun

                                @a200 Ja, in alten Zeiten war das mal die Faustregel. Mach ich aber bei Systemen mit mehr als 2GB RAM nicht mehr.

                                a200A Offline
                                a200A Offline
                                a200
                                schrieb am zuletzt editiert von
                                #44

                                @Thomas-Braun sagte in Speicherlecks im ioBroker?:

                                @a200 Ja, in alten Zeiten war das mal die Faustregel. Mach ich aber bei Systemen mit mehr als 2GB RAM nicht mehr.

                                Na dann viel Spaß mit hibernate, vor allem dann, wenn du neben swap nur noch eine Partition für dein FS nutzt.

                                IoBroker auf QNAP TS-451, Raspi und NUC

                                Thomas BraunT 1 Antwort Letzte Antwort
                                0
                                • a200A a200

                                  @Thomas-Braun sagte in Speicherlecks im ioBroker?:

                                  @a200 Ja, in alten Zeiten war das mal die Faustregel. Mach ich aber bei Systemen mit mehr als 2GB RAM nicht mehr.

                                  Na dann viel Spaß mit hibernate, vor allem dann, wenn du neben swap nur noch eine Partition für dein FS nutzt.

                                  Thomas BraunT Online
                                  Thomas BraunT Online
                                  Thomas Braun
                                  Most Active
                                  schrieb am zuletzt editiert von
                                  #45

                                  @a200 Hier wird nix in hibernate geschickt, von daher für mich entbehrlich.

                                  Linux-Werkzeugkasten:
                                  https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                  NodeJS Fixer Skript:
                                  https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                  iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                  L 1 Antwort Letzte Antwort
                                  0
                                  • Thomas BraunT Thomas Braun

                                    @a200 Hier wird nix in hibernate geschickt, von daher für mich entbehrlich.

                                    L Offline
                                    L Offline
                                    LoxDUS
                                    schrieb am zuletzt editiert von
                                    #46

                                    Ich werde wahnsinnig !!!
                                    Habe gerade nochmal in den Speicherverbrauch reingeschaut:

                                    2af98b57-21f2-477f-a882-6ea346c7b707-image.png
                                    Nach der Überarbeitung der Scripte ist es zwar viel ruhiger geworden im Vergleich zu den Speicheraktivitäten (siehe ganz oben in diesem Thema) noch vor ca. 2 Tagen, nun fällt aber auf das der Speicher insgesamt also nicht nur der io.Javascript sondern auch z.B. der shelly, der systeminfo, eigentlich quasi alle Instanzen immer mehr Speicher brauchen. Der Trend geht bei nahezu allen Instanzen der verschiedenen Adaptern nach oben (wenn auch nur sehr langsam).

                                    Vielleicht mache ich mich da ja auch verrückt und Linux holt sich gerade viele Dinge in seinen Speicher rein damit sich die Prozesse wohlfühlen aber ich werde schon wieder nervös wenn ich sehe das mein Speicher wieder nur zu ca. 27% frei ist.

                                    40820fb4-cf70-41bb-b225-c6f1bfea2dc5-image.png

                                    Ich werde ioBroker jetzt nochmal neu starten und mir die Speicherverläufe der nächsten Tage nochmal ansehen.

                                    K liv-in-skyL Dr. BakteriusD 3 Antworten Letzte Antwort
                                    0
                                    • L LoxDUS

                                      Ich werde wahnsinnig !!!
                                      Habe gerade nochmal in den Speicherverbrauch reingeschaut:

                                      2af98b57-21f2-477f-a882-6ea346c7b707-image.png
                                      Nach der Überarbeitung der Scripte ist es zwar viel ruhiger geworden im Vergleich zu den Speicheraktivitäten (siehe ganz oben in diesem Thema) noch vor ca. 2 Tagen, nun fällt aber auf das der Speicher insgesamt also nicht nur der io.Javascript sondern auch z.B. der shelly, der systeminfo, eigentlich quasi alle Instanzen immer mehr Speicher brauchen. Der Trend geht bei nahezu allen Instanzen der verschiedenen Adaptern nach oben (wenn auch nur sehr langsam).

                                      Vielleicht mache ich mich da ja auch verrückt und Linux holt sich gerade viele Dinge in seinen Speicher rein damit sich die Prozesse wohlfühlen aber ich werde schon wieder nervös wenn ich sehe das mein Speicher wieder nur zu ca. 27% frei ist.

                                      40820fb4-cf70-41bb-b225-c6f1bfea2dc5-image.png

                                      Ich werde ioBroker jetzt nochmal neu starten und mir die Speicherverläufe der nächsten Tage nochmal ansehen.

                                      K Offline
                                      K Offline
                                      klassisch
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #47

                                      @LoxDUS Warte es einfach mal ab. Wie oben schon geschrieben, bei meinem Windows-ioBroker System geht es immer auf und ab.
                                      Ist zwar Win, aber andere werden das Speichermanagement auch nicht so viel anders machen. Man macht es sich erst mal einfach und nimmt was da da ist, solange noch was da ist. Wenn es eng wird, dann wird man aktiv und räumt auf.

                                      1 Antwort Letzte Antwort
                                      0
                                      • L LoxDUS

                                        Ich werde wahnsinnig !!!
                                        Habe gerade nochmal in den Speicherverbrauch reingeschaut:

                                        2af98b57-21f2-477f-a882-6ea346c7b707-image.png
                                        Nach der Überarbeitung der Scripte ist es zwar viel ruhiger geworden im Vergleich zu den Speicheraktivitäten (siehe ganz oben in diesem Thema) noch vor ca. 2 Tagen, nun fällt aber auf das der Speicher insgesamt also nicht nur der io.Javascript sondern auch z.B. der shelly, der systeminfo, eigentlich quasi alle Instanzen immer mehr Speicher brauchen. Der Trend geht bei nahezu allen Instanzen der verschiedenen Adaptern nach oben (wenn auch nur sehr langsam).

                                        Vielleicht mache ich mich da ja auch verrückt und Linux holt sich gerade viele Dinge in seinen Speicher rein damit sich die Prozesse wohlfühlen aber ich werde schon wieder nervös wenn ich sehe das mein Speicher wieder nur zu ca. 27% frei ist.

                                        40820fb4-cf70-41bb-b225-c6f1bfea2dc5-image.png

                                        Ich werde ioBroker jetzt nochmal neu starten und mir die Speicherverläufe der nächsten Tage nochmal ansehen.

                                        liv-in-skyL Offline
                                        liv-in-skyL Offline
                                        liv-in-sky
                                        schrieb am zuletzt editiert von
                                        #48

                                        @LoxDUS

                                        nur zur info:

                                        https://www.linuxatemyram.com/

                                        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                        1 Antwort Letzte Antwort
                                        0
                                        • L LoxDUS

                                          Ich werde wahnsinnig !!!
                                          Habe gerade nochmal in den Speicherverbrauch reingeschaut:

                                          2af98b57-21f2-477f-a882-6ea346c7b707-image.png
                                          Nach der Überarbeitung der Scripte ist es zwar viel ruhiger geworden im Vergleich zu den Speicheraktivitäten (siehe ganz oben in diesem Thema) noch vor ca. 2 Tagen, nun fällt aber auf das der Speicher insgesamt also nicht nur der io.Javascript sondern auch z.B. der shelly, der systeminfo, eigentlich quasi alle Instanzen immer mehr Speicher brauchen. Der Trend geht bei nahezu allen Instanzen der verschiedenen Adaptern nach oben (wenn auch nur sehr langsam).

                                          Vielleicht mache ich mich da ja auch verrückt und Linux holt sich gerade viele Dinge in seinen Speicher rein damit sich die Prozesse wohlfühlen aber ich werde schon wieder nervös wenn ich sehe das mein Speicher wieder nur zu ca. 27% frei ist.

                                          40820fb4-cf70-41bb-b225-c6f1bfea2dc5-image.png

                                          Ich werde ioBroker jetzt nochmal neu starten und mir die Speicherverläufe der nächsten Tage nochmal ansehen.

                                          Dr. BakteriusD Online
                                          Dr. BakteriusD Online
                                          Dr. Bakterius
                                          Most Active
                                          schrieb am zuletzt editiert von
                                          #49

                                          @LoxDUS sagte in Speicherlecks im ioBroker?:

                                          Der Trend geht bei nahezu allen Instanzen der verschiedenen Adaptern nach oben (wenn auch nur sehr langsam).

                                          Das ist normal. Bei mir steigt der RAM-Bedarf über zwei Tage an und bleibt dann auf etwa diesem Niveau.

                                          L 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          751

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe