FHEM Forum

FHEM => Sonstiges => Thema gestartet von: FhemPiUser am 31 Januar 2016, 14:22:36

Titel: [Gelöst] Analyse Load-Problem fhem
Beitrag von: FhemPiUser am 31 Januar 2016, 14:22:36
Ein "top" auf dem RPI2 zeigt > 95% CPU Auslastung von fhem über längere Zeit.

Code: [Auswählen]

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
12290 fhem      20   0   81832  76280   6968 R  95,7  8,0  38:02.32 perl

Kann man irgendwie sehen, womit fhem da beschäftigt ist (ausser mit apptime, was ich schon nutze)?
Titel: Antw:Analyse Load-Problem fhem
Beitrag von: rudolfkoenig am 31 Januar 2016, 15:54:15
Mwn gibt es noch keine Alternative zu apptime.
Was funktioniert damit nicht?
Titel: Antw:Analyse Load-Problem fhem
Beitrag von: rumors am 31 Januar 2016, 16:09:18
Hast du auch schonmal in den Event monitir geschaut was dort so alles aufläuft ?
Titel: Antw:Analyse Load-Problem fhem
Beitrag von: FhemPiUser am 31 Januar 2016, 16:29:07
apptime funktioniert, aber ich kann noch nicht genau den Grund damit ergründen.

Die Top-Einträge von apptime sind:


name             function    max  count    total  average maxDly
WEBWandtablet              FW_Read   4138    384    96652   251.70      0 HASH(WEBWandtablet)
Arduino_Heizung             FRM_Read   2448      1     2448  2448.00      0 HASH(Arduino_Heizung)
HMLAN1           HMLAN_Read   2149   3385   137489    40.62      0 HASH(HMLAN1)


also nehme ich an, dass das WebWandtablet das Problem ist...
Titel: Antw:Analyse Load-Problem fhem
Beitrag von: viegener am 31 Januar 2016, 16:57:19
Zitat von: FhemPiUser am 31 Januar 2016, 16:29:07
apptime funktioniert, aber ich kann noch nicht genau den Grund damit ergründen.



also nehme ich an, dass das WebWandtablet das Problem ist...

Das kann natürlich sein, aber manchmal sind es nicht die Top-Einträge in einer bestimmten Sortierung, die das Problem darstellen.
Ausserdem findet in FW_Read relativ viel statt...

Also würde ich auf jeden Fall verbose 5 in diesen Situationen einschalten und mir auch mehr also nur die 3 Top-Einträge anschauen.
(Unterschiedliche Sortierungen sind manchmal ebenfalls nötig)


Titel: Antw:Analyse Load-Problem fhem
Beitrag von: FhemPiUser am 31 Januar 2016, 17:16:14
ja, danke. Ich bekomme mit verbose 5 tausende von list-Kommandos mit langen device-listen

WEBWandtablet_192.168.1.167_45882 GET /fhem/?cmd=list+...+&XHR=1&_=1454256645997; BUFLEN:0

und

Cmd: >list ....

wobei "..." ca. 30-50 devices aufzählt. Die kommen alle vom Tablet UI auf meinem Wandtablet...

Ist das "BUFLEN:0" ok?
Titel: Antw:Analyse Load-Problem fhem
Beitrag von: viegener am 31 Januar 2016, 18:34:49
Dann müsste sich doch einfach ausprobieren lassen, das Wandtablet einfach mal auszuschalten, um zu überprüfen, ob dann das Problem weg ist.
Grundsätzlich ist bei mir FW-Read (vom Tablet UI) auch relativ weit oben, ich habe aber keine "verbose 5" ausgaben. Die list-Befehle finde ich jetzt erstmal überraschend.

Wie gesagt ansonsten würde ich auch nach verschiedenen Kriterien apptime listen

Titel: Antw:Analyse Load-Problem fhem
Beitrag von: FhemPiUser am 31 Januar 2016, 19:23:40
Danke, es war das Wandtablet-/Tablet-UI-Problem.

Habe mal einen schnellen Fix eingebaut und damit ist das Load-Problem bei mir behoben:

In fhem-tablet-ui.js folgendes angepasst (diff):

28,30d27
< /* setonlinefix */
< var lastsetOnline = 0;
<
125,136c122,127
<        /* setonlinefix */
<         var ltime = new Date().getTime() / 1000;
<         if ((ltime - lastsetOnline) > 60){
<           if (DEBUG) ftui.toast("Network connected");
<           lastsetOnline = ltime;
<           startShortPollInterval(500);
<           if (!doLongPoll){
<               doLongPoll  = ($("meta[name='longpoll']").attr("content") == '1');
<               if ( doLongPoll )
<                   startLongPollInterval(5000);
<           }
<           ftui.log(1,'FTUI is online');
---
>         if (DEBUG) ftui.toast("Network connected");
>         startShortPollInterval(500);
>         if (!doLongPoll){
>             doLongPoll  = ($("meta[name='longpoll']").attr("content") == '1');
>             if ( doLongPoll )
>                 startLongPollInterval(5000);
137a129
>         ftui.log(1,'FTUI is online');