Skip to content
  • Home
  • 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

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Gelöst] Memory Problem beim ausführen von Javascript Code

NEWS

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

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

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

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 3 Kommentatoren 720 Aufrufe
  • Ä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.
  • A Offline
    A Offline
    afroasiate
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      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

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • frankjokeF Offline
        frankjokeF Offline
        frankjoke
        schrieb am zuletzt editiert von
        #3

        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!

        Frank,

        NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
        Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

        1 Antwort Letzte Antwort
        0
        • A Offline
          A Offline
          afroasiate
          schrieb am zuletzt editiert von
          #4

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

          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

          494

          Online

          32.4k

          Benutzer

          81.4k

          Themen

          1.3m

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

          • Du hast noch kein Konto? Registrieren

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