Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    1.1k

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    6.2k

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

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 3 Kommentatoren 842 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

          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

          Registrieren Anmelden
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          281

          Online

          33.0k

          Benutzer

          83.6k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2026
          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