Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Memory Problem beim ausführen von Javascript Code

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Gelöst] Memory Problem beim ausführen von Javascript Code

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

      Hallo Leute,

      habe bei mir folgendes Script am laufen:

      /* VIS Fotoshow
      
      */
      
      var logging = false;
      var instanz = 'javascript.0.';
      
      var idURL = instanz + 'VIS.URL.Foto';
      var foto_url;
      
      function findeFoto () {
      
          foto_url = "http://192.168.100.165:8082/vis.0/fotos/foto" + Math.floor(Math.random()*(138-1+1)+1)  +".jpg";
      
          //Hochkant + Breit
          for(var i=1;i<=6;i++){
              foto_url = "http://192.168.100.165:8082/vis.0/fotos/hoch/Foto" + Math.floor(Math.random()*(442-1+1)+1)  +".jpg";
      
              createState('VIS.URL.Foto'+"Hochkant"+i,'', {
                  name: 'Link zur Fotoshow',
                  desc: 'Waehlt zufällig ein Foto',
                  type: 'string'
              });
      
              setState(idURL+"Hochkant"+i, foto_url);
      
              foto_url = "http://192.168.100.165:8082/vis.0/fotos/quer/Foto" + Math.floor(Math.random()*(711-1+1)+1)  +".jpg";
      
              createState('VIS.URL.Foto'+"Breit"+i,'', {
                  name: 'Link zur Fotoshow',
                  desc: 'Waehlt zufällig ein Foto',
                  type: 'string'
              });
      
              setState(idURL+"Breit"+i, foto_url);
      
              //log (idURL+"breit"+i);
      
          }
      
          setState(idURL, foto_url);
      
      } // Ende findeFoto
      
      schedule("*/10 * * * *", findeFoto); // alle 10 Minuten
      
      findeFoto();
      
      

      Solange ich das Script einfach nur laufen lasse habe ich kein Problem. Nachdem ich allerdings in einer VIS View die wechselnden Bilder in einem Widget anzeigen lasse (Wanddisplay) entsteht folgendes Problem:

      Der RAM-Verbruach des Prozess iobroker.js-controller wird alle 10 Minuten nachdem ausführen des Scripts immer etwas größer was nach etwa 4h dazu führt das der iobroker nicht mehr erreichbar ist.

      node v4.8.0

      js-controller v0.17.2

      Über Hinweise bin ich dankbar.

      Grüße

      afroasiate

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

        Als erstes würd eich die "createState" mal alle vorab EINMALIG ausführen. Also aus der Funktion rausnehmen und vorher machen. Dann nur die setStates … vllt reicht das ja schon

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

          Afroasiate,

          zuerst würde ich die 'createStates' zuerst im script durchführen on aus dem fideFoto() weglassen, dort reicht es mit setState diese neu zu füllen.

          In der momentanen Version wird alle 10 Minuten 12 neue States kreiert/ersetzt, das ist nicht notwendig, du brauchst sie ja nur mit den neuen Werten zu beschreiben.

          Deine (xxx-1+1) verstehe ich auch nicht könnte durch xxx ersetzt werden, aber das ist nicht problematisch…

          /* VIS Fotoshow
          
          */
          
          var logging = false;
          var instanz = 'javascript.0.';
          
          var idURL = instanz + 'VIS.URL.Foto';
          var foto_url;
          
          for(var i=1;i<=6;i++){
                  createState('VIS.URL.Foto'+"Hochkant"+i,'', {
                      name: 'Link zur Fotoshow',
                      desc: 'Waehlt zufällig ein Foto',
                      type: 'string'
                  });
          
                  createState('VIS.URL.Foto'+"Breit"+i,'', {
                      name: 'Link zur Fotoshow',
                      desc: 'Waehlt zufällig ein Foto',
                      type: 'string'
                  });
          
          }
          
          function findeFoto () {
          
              foto_url = "http://192.168.100.165:8082/vis.0/fotos/foto" + Math.floor(Math.random()*138+1)  +".jpg";
          
              //Hochkant + Breit
              for(var i=1;i<=6;i++){
                  foto_url = "http://192.168.100.165:8082/vis.0/fotos/hoch/Foto" + Math.floor(Math.random()*442+1)  +".jpg";
          
                  setState(idURL+"Hochkant"+i, foto_url);
          
                  foto_url = "http://192.168.100.165:8082/vis.0/fotos/quer/Foto" + Math.floor(Math.random()*711+1)  +".jpg";
          
                  setState(idURL+"Breit"+i, foto_url);
          
                  //log (idURL+"breit"+i);
          
              }
          
              setState(idURL, foto_url);
          
          } // Ende findeFoto
          
          schedule("*/10 * * * *", findeFoto); // alle 10 Minuten
          
          setTimeout(findeFoto,500);
          
          

          Ja, das erste findeFoto hab ich auch verspätet da man createState etwas Zeit geben sollte, sind doch createState und setState asynchrone Funktionen!

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

            Leider ist das Problem damit nicht gelöst. Der RAM ist heute Nacht wieder vollgelaufen.

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

            Support us

            ioBroker
            Community Adapters
            Donate

            545
            Online

            31.7k
            Users

            79.8k
            Topics

            1.3m
            Posts

            3
            4
            616
            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