Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. Erledigt: js-controller 100% cpu 1.2.7

    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

    Erledigt: js-controller 100% cpu 1.2.7

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

      Hallo, der neue 1.2.7 js-controller braucht bei mir 100% cpu?

      609_bildschirmfoto_2018-03-11_um_00.03.12.png

      Man sieht hier: um ca. 10:00 installiert.

      Dann gab es andere Probleme, aber als es wider lief:

      609_bildschirmfoto_2018-03-11_um_00.05.56.png

      Nach Neuinstallation der npm´s lief alles wieder.

      Dabei der Tipp:

      package.json

      package-lock.json

      in

      /opt/iobroker vor reinstall löschen.

      Sonst kann es zu unschönen Fehlern beim Neuinstallieren kommen.

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

        Guten Morgen,

        Das habe ich nicht. Last von JS-Controller liegt nach ca 5 Minuten Beobachtung zwischen 3-8%.

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

          kann ichso auch nicht bestätigen

          top verrät mir zwischen 2 und 12 %

          Gruss Black

          1 Reply Last reply Reply Quote 0
          • M
            MagicSven last edited by

            ich habe seit kurzem ein ähnliches Problem.

            Last von "io.javascript" liegt anfangs bei ca. 1-2%

            7882_top.jpg

            Nachdem ich einen einfach Sprachbefehl an Alexa mit Sprachausgabe der Temperatur sende schießt die Last auf 100%

            und lässt sich nur durch einen Neustart der Instanz beheben.

            Im Script dürfte ich keinen Fehler oder Loop drin haben, da es recht einfach aufgebaut ist.

            Siehe Anhang.

            7882_alexa.jpg
            .
            7882_java2.jpg

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

              Mach mal nicht aktualisiert oben, sondern geändert.

              1 Reply Last reply Reply Quote 0
              • M
                MagicSven last edited by

                @Stabilostick:

                Mach mal nicht aktualisiert oben, sondern geändert. `

                :roll: :roll:

                MEGA FETTES DANKE !!!

                Ich suche den Fehler schon seit knapp einer Woche - und jetzt liegt es an so etwas banalem…

                Kannst du mir vielleicht noch verraten warum dieser kleine Wert die CPU Last so nach oben schießen lässt und die

                Temperatur des Raspi von 45°C dadurch auf 80°C ansteigt?

                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators last edited by

                  Wie oft wird der Wert aktualisiert?

                  Danach wird der Wert auf unwahr gesetzt, also wieder aktualisiert….

                  Ich würde fas schon eine Loop nennen. 😄

                  Gruß Rainer

                  1 Reply Last reply Reply Quote 0
                  • L
                    LJSven last edited by

                    Wie kann man man die CPU der einzelnen Adapter loggen?

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @LJSven last edited by

                      @LJSven sagte in Erledigt: js-controller 100% cpu 1.2.7:

                      Wie kann man man die CPU der einzelnen Adapter loggen?

                      ???

                      1 Reply Last reply Reply Quote 0
                      • L
                        LJSven last edited by

                        Oben in der Grafik werden die Adapter dargestellt mit CPU Belastung. Ich möchte versuchen, ob ich so meinen Übeltäter finde.

                        AlCalzone 1 Reply Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer @LJSven last edited by

                          @LJSven Es gibt hierfür Datenpunkte bei jedem Adapter, die du mit dem history-Adapter aufzeichnen und z.B. mit grafana oder flot darstellen kannst.

                          L 1 Reply Last reply Reply Quote 0
                          • L
                            LJSven @AlCalzone last edited by LJSven

                            @AlCalzone Ich sehe die nicht. Wo finde ich die Datenpunkte?

                            AlCalzone paul53 Homoran 3 Replies Last reply Reply Quote 0
                            • AlCalzone
                              AlCalzone Developer @LJSven last edited by

                              @LJSven Homoran hat mich auch gerade gefragt... ich hätte schwören können dass es die gibt. Vielleicht habe ich mich getäuscht und das mit dem Speicherverbrauch verwechselt 😓

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

                                @LJSven

                                Adapter_CPU.JPG

                                Homoran 1 Reply Last reply Reply Quote 1
                                • Homoran
                                  Homoran Global Moderator Administrators @paul53 last edited by

                                  @paul53

                                  Welche Version admin/controller?

                                  1 Reply Last reply Reply Quote 0
                                  • AlCalzone
                                    AlCalzone Developer last edited by

                                    ab JS-Controller 1.5.1:
                                    https://github.com/ioBroker/ioBroker.js-controller/blob/ba45ad48b668dc02c55cecad2870e9333c9b57f9/CHANGELOG.md#151-2018-09-14-evolution-release-ann

                                    1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @LJSven last edited by

                                      @LJSven
                                      Wenn du es nicht loggen willst, gibt es ein Skript von @ruhr70 indem alle Prozesse in ein json geschrieben und aktualisiert werden.

                                      Wenn du das json in einer vis einbindest (so mache ich es) hast du immer den Überblick der Prozesse und der Belastung.

                                      var pfad            = "Systeminfos.ioBroker.Prozesse" + "."; // Pfad in dem die Datenpunkte angelegt werden
                                      
                                      // Datenpunktnamen:
                                      var idProzesse          = pfad + 'ioBroker_Prozesse';
                                      var idMemAll            = pfad + 'ioBroker_Speicher_gesamt';
                                      var idAnzProzesse       = pfad + 'ioBroker_Anzahl_Prozesse';
                                      var idCpuAll            = pfad + 'ioBroker_CPU_Gesamt';
                                      var idMemPercent        = pfad + 'ioBroker_Speicher_prozentual';
                                      var idInstanzenEinmal   = pfad + 'ioBroker_Instanzen_einmal_aktiv';
                                      
                                      
                                      // regelmässige Wiederholungen der Abfrage
                                      var cronStr         = "*/2 * * * *";
                                      
                                      var abfrage         = 'ps -A aux --sort -pcpu | grep " [i]o.*"';
                                      
                                      
                                      
                                      
                                      // -----------------------------------------------------------------------------
                                      
                                      
                                      createState(idProzesse, "", {
                                          name: 'ioBroker laufende Prozesse Objekt',
                                          desc: 'ioBroker laufende Prozesse Objekt, Speicherverbrauch',
                                          type: 'string',
                                          unit: '',
                                          role: 'object'
                                      });
                                      
                                      createState(idMemAll, 0, {
                                          name: 'ioBroker Speicherverbrauch gesamt',
                                          desc: 'ioBroker Speicherverbrauch gesamt (RSS)',
                                          type: 'number',
                                          unit: 'MB',
                                          role: 'value'
                                      });
                                      
                                      createState(idAnzProzesse, 0, {
                                          name: 'ioBroker Anzahl Prozesse',
                                          desc: 'ioBroker Anzahl aktiver Prozesse',
                                          type: 'number',
                                          unit: '',
                                          role: 'value'
                                      });
                                      
                                      createState(idCpuAll, 0.0, {
                                          name: 'ioBroker CPU-Last gesamt',
                                          desc: 'ioBroker CPU-Last gesamt',
                                          type: 'number',
                                          unit: '%',
                                          role: 'value'
                                      });
                                      
                                      createState(idMemPercent, 0.0, {
                                          name: 'Speicherverbrauch prozentual',
                                          desc: 'Speicherverbrauch prozentual',
                                          type: 'number',
                                          unit: '%',
                                          role: 'value'
                                      });
                                      
                                      createState(idInstanzenEinmal, true, {
                                          name: 'keine Instanzen doppelt aktiv',
                                          desc: 'jeder aktive ioBroker Prozess ist nur einmal aktiv',
                                          type: 'boolean',
                                          unit: '',
                                          role: 'value'
                                      });
                                      
                                      
                                      
                                      // -----------------------------------------------------------------------------
                                      
                                      
                                      function doppelteProzesse(arr) {
                                         var mehrfacheProzesse = [];
                                         var anzProzesse = (arr.length);
                                         var anzProzessAktiv = 0;
                                         for (var i = 0; i < anzProzesse; i++) {
                                             if (mehrfacheProzesse.indexOf(arr[i].command) == -1) {
                                                 anzProzessAktiv = zaehleProzesse(arr,arr[i].command);
                                                 if (anzProzessAktiv > 1) {
                                                     log("Prozess: " + arr[i].command+", mehrfach aktiv: " + anzProzessAktiv +" mal","warn");
                                                     mehrfacheProzesse.push(arr[i].command);
                                                     mehrfacheProzesse.push(anzProzessAktiv);
                                                 }
                                             }
                                         }    
                                         return mehrfacheProzesse;
                                      }
                                      
                                      function zaehleProzesse(arr,command) {
                                         var count = 0;
                                         var anzProzesse = (arr.length);
                                         for (var i = 0; i < anzProzesse; i++) {
                                             if(arr[i].command === command) {
                                                 count++;
                                             }
                                         }    
                                         return count;
                                      }
                                      
                                      
                                      function writeJson(json) {
                                         return JSON.stringify(json);    // JSON in String umwandeln, damit das JSON in einem Datenpunkt geschrieben werden kann
                                      }
                                      
                                      
                                      function getMemAbsolut(json) {
                                         var anzProzesse = (json.length);
                                         var mem = 0;
                                         for (var i = 0; i < anzProzesse; i++) {
                                             mem = mem + json[i].rss;
                                         }    
                                         return mem;
                                      }
                                      
                                      function getCpu(json) {
                                         var anzProzesse = (json.length);
                                         var cpu = 0.0;
                                         for (var i = 0; i < anzProzesse; i++) {
                                             cpu = cpu + json[i].cpu;
                                         }    
                                         return cpu;
                                      }
                                      
                                      function getMem(json) {
                                         var anzProzesse = (json.length);
                                         var mem = 0.0;
                                         for (var i = 0; i < anzProzesse; i++) {
                                             mem = mem + json[i].mem;
                                         }    
                                         return mem;
                                      }
                                      
                                      
                                      function createArrayJson(arr) {
                                         var jsonArr     = [];
                                         var anzDP       = 11;                       // Anzahl Datenreihen in der Abfrage
                                         var anzProzesse = (arr.length-1)/anzDP;
                                      
                                         for (var i = 0; i < anzProzesse; i++) {
                                             jsonArr.push({
                                                 command:    arr[10 + i*anzDP],              // ioBroker Prozess (COMMAND = Kommando, mit dem der Prozess gestartet wurde)
                                                 pid:        arr[ 1 + i*anzDP],              // Prozess ID
                                                 cpu:        parseFloat(arr[ 2 + i*anzDP]),  // aktueller CPU-Last in %
                                                 mem:        parseFloat(arr[ 3 + i*anzDP]),  // aktueller Verbrauch physikalischer Speicher %
                                                 vmem:       parseInt(arr[ 4 + i*anzDP]),    // 
                                                 rss:        parseInt(arr[ 5 + i*anzDP]),    // physikalische Speichernutzung
                                                 start:      arr[ 8 + i*anzDP],              // Startzeitpunkt des Prozesses
                                                 time:       arr[ 9 + i*anzDP]               // bisher verbrauchte CPU Zeit
                                             });
                                         }
                                         return jsonArr;
                                      }
                                      
                                      
                                      function abfrageConsole() {
                                         exec(abfrage, function(err, stdout, stderr) {
                                             if (err) {
                                                 log(err,"error");
                                                 return;
                                             }
                                             stdout = stdout.replace(/\n+/g, " "); // neue Zeile gegen Leerzeichen ersetzen
                                             stdout = stdout.split(/ +/g);         // array erstellen, Lerzeichen als Trenner
                                             
                                             var anzProzesse = (stdout.length-1) / 11;
                                             
                                             //log(stdout);
                                             //log("Anzahl laufender ioBroker Prozesse: " + anzProzesse);
                                             
                                             var jsonArr = createArrayJson(stdout);
                                             var mem         = Math.floor(getMemAbsolut(jsonArr)/1024);
                                             var cpu         = Math.floor(getCpu(jsonArr)*10)/10;
                                             var memPercent  = Math.floor(getMem(jsonArr)*10)/10;
                                      
                                             var doppeltArr = doppelteProzesse(jsonArr);
                                             
                                             if(doppeltArr.length === 0) {
                                                 setState(idInstanzenEinmal,true);
                                             } else {
                                                 setState(idInstanzenEinmal,false);
                                             }
                                      
                                             setState(idProzesse     ,writeJson(jsonArr));
                                             setState(idMemAll       ,mem);
                                             setState(idAnzProzesse  ,anzProzesse);
                                             setState(idCpuAll       ,cpu);
                                             setState(idMemPercent   ,memPercent);
                                         });
                                      }
                                      
                                      
                                      function abfragen() {
                                         abfrageConsole();
                                      }
                                      
                                      // regelmässige Wiederholungen
                                      // -----------------------------------------------------------------------------
                                      schedule(cronStr, abfragen);
                                      
                                      
                                      // main
                                      // -----------------------------------------------------------------------------
                                      function main() {
                                         abfragen();
                                      }
                                      
                                      
                                      // Start Skript:
                                      // -----------------------------------------------------------------------------
                                      
                                      setTimeout(main,    500);
                                      ´´´
                                      [/s]
                                      1 Reply Last reply Reply Quote 0
                                      • L
                                        LJSven last edited by

                                        Das ist aber nicht bei allen Adpatern vorhanden, oder?

                                        sigi234 Homoran 2 Replies Last reply Reply Quote 0
                                        • sigi234
                                          sigi234 Forum Testing Most Active @LJSven last edited by

                                          @LJSven sagte in Erledigt: js-controller 100% cpu 1.2.7:

                                          Das ist aber nicht bei allen Adpatern vorhanden, oder?

                                          Bei mir gibt es den DP (cpu) nicht. (Windows System)

                                          Aber da gibt es einen interessanten Adapter:

                                          https://github.com/AWhiteKnight/ioBroker.moma

                                          L 1 Reply Last reply Reply Quote 0
                                          • L
                                            LJSven @sigi234 last edited by

                                            @sigi234 sagte in Erledigt: js-controller 100% cpu 1.2.7:

                                            @LJSven sagte in Erledigt: js-controller 100% cpu 1.2.7:

                                            Das ist aber nicht bei allen Adpatern vorhanden, oder?

                                            Bei mir gibt es den DP (cpu) nicht. (Windows System)

                                            Aber da gibt es einen interessanten Adapter:

                                            https://github.com/AWhiteKnight/ioBroker.moma

                                            Der zeigt aber nicht Belastungswerte der einzelnen Adapter an, oder?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            848
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            11
                                            32
                                            2519
                                            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