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.
    • 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
                  • sigi234
                    sigi234 Forum Testing Most Active @LJSven last edited by sigi234

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

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

                    Aha, ich glaube nicht muss ich mal nachsehen........

                    So, der zeigt nur die Host Daten an............leider.

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

                      @LJSven

                      Wir haben gestern festgestellt, dass dieser Datenpunkt anscheinend nur bei Neuanlegen eines Adapters angelegt wird.
                      Ein Update bringt diesen (neueren) Datenpunkt anscheinend nicht

                      L crunchip 2 Replies Last reply Reply Quote 0
                      • L
                        LJSven last edited by

                        Ja, dass habe ich auch gesehen. Gibt es ein Workaround, ohne die Settings zu verlieren. Der Datenpunkt ist ja schon sehr interessant.

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

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

                          @LJSven

                          Wir haben gestern festgestellt, dass dieser Datenpunkt anscheinend nur bei Neuanlegen eines Adapters angelegt wird.
                          Ein Update bringt diesen (neueren) Datenpunkt anscheinend nicht

                          PS. Ich habe gestern meinen ioBroker aus einem Backup hergestellt und die Punkte werden trotzdem nicht angelegt - fyi.

                          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:

                            meinen ioBroker aus einem Backup hergestellt

                            Da bin ich mir nicht sicher, ob die states nicht schon in der Konfig stehen.

                            Danke für den Hinweis

                            1 Reply Last reply Reply Quote 0
                            • crunchip
                              crunchip Forum Testing Most Active @Homoran last edited by

                              @Homoran meinst du, generell bei neu Anlegen eines Adapter, kommt der Datenpunkt mit? und dann auch bei jedem?

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

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

                                @Homoran meinst du, generell bei neu Anlegen eines Adapter, kommt der Datenpunkt mit? und dann auch bei jedem?

                                Ja

                                crunchip 1 Reply Last reply Reply Quote 0
                                • crunchip
                                  crunchip Forum Testing Most Active @Homoran last edited by

                                  @Homoran ok, werd ich vllt später mal testen, bei Adaptern, wo man nicht groß einstellen muss.

                                  Hab mal alle durchgesehen, die ich die ich drin hab und zwei Listen erstellt, einmal mit cpu und eine ohne cpu Datenpunkt.
                                  was mir dabei aufgefallen ist,

                                  system.adapter.tr-064.0, system.adapter.wifilight.0, zeigen nur prevVersion als Datenpunkt, alle anderen Datenpunkte fehlen.
                                  Beim system.adapter.ical.0 wird keine cpu übermittelt, jedoch bei system.adapter.ical.1 wird cpu angezeigt
                                  mit CPU.txt
                                  ohne CPU.txt

                                  1 Reply Last reply Reply Quote 0
                                  • crunchip
                                    crunchip Forum Testing Most Active last edited by

                                    @Homoran parser, proxmox und onkyo mal de/installiert, cpu läuft.
                                    Adapter muss aber nicht gelöscht werden, reicht auch nur die Instanz zu löschen.

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

                                      @crunchip

                                      DANKE!

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

                                        @crunchip Bleiben dann die Einstellungen erhalten?

                                        crunchip 1 Reply Last reply Reply Quote 0
                                        • crunchip
                                          crunchip Forum Testing Most Active @LJSven last edited by

                                          @LJSven nein, die Einstellung nimmst du ja in der Instanz vor.
                                          Genauso, wie wenn du z.b. eine zweite Instanz anlegst, musst du ja auch spezifisch dafür deine Einstellungen vornehmen, ausser bei Adaptern, bei denen es nichts weiter zum einstellen gibt.

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          779
                                          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