Fhem Webfrontend wird träge

Begonnen von Florian_GT, 12 April 2015, 15:59:24

Vorheriges Thema - Nächstes Thema

Florian_GT

Hallo zusammen,

ich habe eine aktuelle Version von FHEM aus dem SVN gezogen und konfiguriert. Ich arbeite mit der Trunk Version. Überwiegend Ethersex NetIOs, XBMC einige Anwesenheitsprüfungen. Das Webinterface braucht inzwischen 7 Sekunden zum laden. Ich finde das extrem viel.

Als Hardware benutze ich einen Server, 2Core mit 4GB RAM.

Die Auslastung ist gering:

top - 15:46:06 up 7 days, 22:25,  2 users,  load average: 0,00, 0,00, 0,00
Tasks:  38 total,   1 running,  37 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,6 us,  0,4 sy,  0,0 ni, 99,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   4194304 total,   253032 used,  3941272 free,        0 buffers
KiB Swap:  4194304 total,        0 used,  4194304 free,   127016 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
24903 root      20   0 84748  26m 2680 S   1,2  0,7   0:11.48 perl
    1 root      20   0 30184 1920 1208 S   0,0  0,0   0:00.28 init
    2 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kthreadd/234
    3 root      20   0     0    0    0 S   0,0  0,0   0:00.00 khelper/234
   84 root      20   0 16988  808  592 S   0,0  0,0   0:00.01 upstart-udev-br


Hier meine Konfiguration:

attr global userattr devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global latitude 51.95124
attr global logfile ./log/fhem-%Y-%m.log
attr global longitude 8.50428
attr global modpath .
attr global motd SecurityCheck:\
\
WEB has no basicAuth attribute.\
telnetPort has no password/globalpassword attribute.\
Running with root privileges.\
Restart FHEM for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\

attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 3

define telnetPort telnet 7072 global
define WEB FHEMWEB 8083 global
attr WEB hiddenroom AlarmRoom,DashboardRoom
#attr WEB hiddenroom DashboardRoom,AlarmRoom
#define WEBphone FHEMWEB 8084 global
#attr WEBphone hiddenroom DashboardRoom,AlarmRoom
#attr WEBphone stylesheetPrefix smallscreen
#define WEBtablet FHEMWEB 8085 global
#attr WEBtablet hiddenroom DashboardRoom,AlarmRoom
#attr WEBtablet stylesheetPrefix touchpad
# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log
define eventTypes eventTypes ./log/eventTypes.txt
# Disable this to avoid looking for new USB devices on startup
#define initialUsbCheck notify global:INITIALIZED usb create





define Sonnenaufgang dummy
attr Sonnenaufgang group Sonne
attr Sonnenaufgang room Wetter
define Sonnenuntergang dummy
attr Sonnenuntergang group Sonne
attr Sonnenuntergang room Wetter
define sun_riseSet_timer at +*00:10 { my $s = sunrise();; fhem("set Sonnenaufgang $s");; $s = sunset();; fhem("set Sonnenuntergang $s");; }


define OnlineWetter Weather 638806 120 de
attr OnlineWetter event-on-update-reading temperature,humidity,pressure,wind_speed,wind_chill,wind_direction
attr OnlineWetter room Wetter
define OnlineWetter_Web weblink htmlCode { WeatherAsHtmlH("OnlineWetter") }
attr OnlineWetter_Web room Wetter


define Twilight Twilight 51.95124 8.50428 1 638806
attr Twilight group Sonne
attr Twilight room Wetter
define FileLog_Twilight FileLog ./log/Twilight-%Y.log T:light.*
attr FileLog_Twilight logtype myTwilight:Plot,text


define NETIO_mobil ECMD telnet 192.168.0.41:2701
attr NETIO_mobil classdefs onewire_ethersex=/fhem/trunk/fhem/onewire.classdef:dht22=/fhem/trunk/fhem/dht22.classdef:bmp085=/fhem/trunk/fhem/bmp085.classdef

define aussen ECMDDevice onewire_ethersex 286a9613020000c6
attr aussen IODev NETIO_mobil
attr aussen alias Außensensor
attr aussen event-min-interval temperature.*:1800
attr aussen event-on-change-reading temperature.*
attr aussen group Mobile_2
attr aussen icon temperature_humidity
attr aussen room Alle
attr aussen stateFormat { sprintf("%s°C", ReadingsVal("aussen","temperature",0)) ;; }
define Timer_aussen at +*00:00:10 set aussen messen;; sleep 1;; set aussen messen;; sleep 2;; get aussen getdata
define FileLog_1Wire_aussen FileLog ./log/Daten-%Y.log aussen


define innen ECMDDevice onewire_ethersex 283e8e1302000076
attr innen IODev NETIO_mobil
attr innen alias Innensensor
attr innen event-min-interval temperature.*:1800
attr innen event-on-change-reading temperature.*
attr innen group Mobile_2
attr innen icon temperature_humidity
attr innen room Alle
attr innen stateFormat { sprintf("%s°C", ReadingsVal("innen","temperature",0)) ;; }
define Timer_innen at +*00:00:10 set innen messen;; sleep 1;; set innen messen;; sleep 2;; get innen getdata
define FileLog_innen FileLog ./log/Daten-%Y.log innen
attr FileLog_innen logtype text


define dht11_station ECMDDevice dht22 0
attr dht11_station IODev NETIO_mobil
attr dht11_station alias Luftfeuchtigkeit
attr dht11_station event-min-interval (temperature|humidity).*:1800
attr dht11_station event-on-change-reading (temperature|humidity).*
attr dht11_station group Mobile_2
attr dht11_station icon temperature_humidity
attr dht11_station room Alle
attr dht11_station stateFormat { sprintf("%s°C %s%%", ReadingsVal("dht11_station","temperature",0), ReadingsVal("dht11_station","humidity",0)) ;; }
define Timer_dht11_station at +*00:00:10 get dht11_station dht22
define FileLog_dht11_station FileLog ./log/Daten-%Y.log dht11_station
attr FileLog_dht11_station logtype text


define dew_all dewpoint dewpoint .* temperature humidity dewpoint
attr dew_all absFeuchte 1

define bmp085_station ECMDDevice bmp085
attr bmp085_station IODev NETIO_mobil
attr bmp085_station alias Luftdruck
attr bmp085_station event-on-change-reading state
attr bmp085_station group Mobile_2
attr bmp085_station icon temperature_humidity
attr bmp085_station room Alle
attr bmp085_station stateFormat { sprintf("%s°C %shPa", ReadingsVal("bmp085_station","temperature",0), ReadingsVal("bmp085_station","pressure",0)) ;; }
define FileLog_bmp085_station FileLog ./log/Daten-%Y.log bmp085_station
attr FileLog_bmp085_station logtype text
define Timer_bmp085_station at +*00:00:04 get bmp085_station getdata


define NETIO_02 ECMD telnet 192.168.0.40:2701
attr NETIO_02 classdefs RFM12=/fhem/trunk/fhem/intertechno.classdef

define rfm12_schranklicht ECMDDevice RFM12 4 1 3
attr rfm12_schranklicht IODev NETIO_02
attr rfm12_schranklicht alias Schranklicht
attr rfm12_schranklicht group Wohnzimmer_1
attr rfm12_schranklicht icon light_light_dim_60
attr rfm12_schranklicht room Alle
define SchranklichtStunden HourCounter rfm12_schranklicht:on rfm12_schranklicht:off

define rfm12_tischlicht ECMDDevice RFM12 1 1 2
attr rfm12_tischlicht IODev NETIO_02
attr rfm12_tischlicht alias Tischlicht
attr rfm12_tischlicht group Wohnzimmer_1
attr rfm12_tischlicht icon light_light_dim_60
attr rfm12_tischlicht room Alle

define rfm12_tv ECMDDevice RFM12 4 1 1
attr rfm12_tv IODev NETIO_02
attr rfm12_tv alias TV
attr rfm12_tv group Wohnzimmer_1
attr rfm12_tv icon light_light_dim_60
attr rfm12_tv room Alle


define rfm12_audio ECMDDevice RFM12 4 1 2
attr rfm12_audio IODev NETIO_02
attr rfm12_audio alias Audio
attr rfm12_audio group Wohnzimmer_1
attr rfm12_audio icon light_light_dim_60
attr rfm12_audio room Alle








define NETIO_03 ECMD telnet 192.168.0.43:2701
attr NETIO_03 classdefs onewire_ethersex=/fhem/trunk/fhem/onewire.classdef:pin=/fhem/trunk/fhem/pin.classdef:pinstate=/fhem/trunk/fhem/pinstate.classdef:dht22=/fhem/trunk/fhem/dht22.classdef:pwm=/fhem/trunk/fhem/pwm.classdef

define server_dht11 ECMDDevice dht22 0
attr server_dht11 IODev NETIO_mobil
attr server_dht11 alias Luftfeuchtigkeit
attr server_dht11 event-min-interval (temperature|humidity).*:1800
attr server_dht11 event-on-change-reading (temperature|humidity).*
attr server_dht11 group Serverraum
attr server_dht11 icon temperature_humidity
attr server_dht11 room Alle
attr server_dht11 stateFormat { sprintf("%s°C %s%%", ReadingsVal("server_dht11","temperature",0), ReadingsVal("server_dht11","humidity",0)) ;; }
define Timer_server_dht11 at +*00:00:10 get server_dht11 dht22
define FileLog_server_dht11 FileLog ./log/Daten-%Y.log server_dht11
attr FileLog_server_dht11 logtype text


define server_system ECMDDevice onewire_ethersex 284590aa03000061
attr server_system IODev NETIO_03
attr server_system alias System
attr server_system event-min-interval temperature.*:1800
attr server_system event-on-change-reading temperature.*
attr server_system group Serverraum
attr server_system icon temperature_humidity
attr server_system room Alle
attr server_system stateFormat { sprintf("%s°C", ReadingsVal("server_system","temperature",0)) ;; }
define Timer_server_system at +*00:00:10 set server_system messen;; sleep 1;; set server_system messen;; sleep 2;; get server_system getdata
define FileLog_server_system FileLog ./log/Daten-%Y.log server_system
attr FileLog_server_system logtype text


define server_festplatten ECMDDevice onewire_ethersex 280f9aaa03000066
attr server_festplatten IODev NETIO_03
attr server_festplatten alias Festplatten
attr server_festplatten event-min-interval temperature.*:1800
attr server_festplatten event-on-change-reading temperature.*
attr server_festplatten group Serverraum
attr server_festplatten icon temperature_humidity
attr server_festplatten room Alle
attr server_festplatten stateFormat { sprintf("%s°C", ReadingsVal("server_festplatten","temperature",0)) ;; }
define Timer_server_festplatten at +*00:00:10 set server_festplatten messen;; sleep 1;; set server_festplatten messen;; sleep 2;; get server_festplatten getdata
define FileLog_server_festplatten FileLog ./log/Daten-%Y.log server_festplatten
attr FileLog_server_festplatten logtype text


define server_raum1 ECMDDevice onewire_ethersex 28ddaa13020000e1
attr server_raum1 IODev NETIO_03
attr server_raum1 alias Raum
attr server_raum1 event-min-interval temperature.*:1800
attr server_raum1 event-on-change-reading temperature.*
attr server_raum1 group Serverraum
attr server_raum1 icon temperature_humidity
attr server_raum1 room Alle
attr server_raum1 stateFormat { sprintf("%s°C", ReadingsVal("server_raum1","temperature",0)) ;; }
define Timer_server_raum1 at +*00:00:10 set server_raum1 messen;; sleep 1;; set server_raum1 messen;; sleep 2;; get server_raum1 getdata
define FileLog_server_raum1 FileLog ./log/Daten-%Y.log server_raum1
attr FileLog_server_raum1 logtype text



define server_pwm1 ECMDDevice pwm a
attr server_pwm1 IODev NETIO_03
attr server_pwm1 alias 1: PWM1
attr server_pwm1 group Serverraum
attr server_pwm1 room Alle
attr server_pwm1 stateFormat { sprintf("%s", ReadingsVal("server_pwm1","pwm",0)) ;; }
#attr server_pwm1 levelRange 40,100
define Timer_server_pwm1 at +*00:00:10 get server_pwm1 getdata
define FileLog_server_pwm1 FileLog ./log/Daten-%Y.log server_pwm1
attr FileLog_server_pwm1 logtype text




define pin1 ECMDDevice pin output1
attr pin1 IODev NETIO_03
attr pin1 alias 1: 230V Steckdose
attr pin1 group Serverraum
attr pin1 room Alle
attr pin1 stateFormat { sprintf("%s", ReadingsVal("pin1","status",0)) ;; }
define Timer_pin1 at +*00:00:10 get pin1 getdata
define FileLog_pin1 FileLog ./log/Daten-%Y.log pin1
attr FileLog_pin1 logtype text

define pin2 ECMDDevice pin output2
attr pin2 IODev NETIO_03
attr pin2 alias 2: Festplatten
attr pin2 group Serverraum
attr pin2 room Alle
attr pin2 stateFormat { sprintf("%s", ReadingsVal("pin2","status",0)) ;; }
define Timer_pin2 at +*00:00:10 get pin2 getdata
define FileLog_pin2 FileLog ./log/Daten-%Y.log pin2
attr FileLog_pin2 logtype text

define pin3 ECMDDevice pin output3
attr pin3 IODev NETIO_03
attr pin3 alias 3: 12V Relais
attr pin3 group Serverraum
attr pin3 room Alle
attr pin3 stateFormat { sprintf("%s", ReadingsVal("pin3","status",0)) ;; }
define Timer_pin3 at +*00:00:10 get pin3 getdata
define FileLog_pin3 FileLog ./log/Daten-%Y.log pin3
attr FileLog_pin3 logtype text

define pin4 ECMDDevice pin output4
attr pin4 IODev NETIO_03
attr pin4 alias 4: 12V Lichterkette
attr pin4 group Serverraum
attr pin4 room Alle
attr pin4 stateFormat { sprintf("%s", ReadingsVal("pin4","status",0)) ;; }
define Timer_pin4 at +*00:00:10 get pin4 getdata
define FileLog_pin4 FileLog ./log/Daten-%Y.log pin4
attr FileLog_pin4 logtype text

define abstellraum_tuer ECMDDevice pinstate input1
attr abstellraum_tuer IODev NETIO_03
attr abstellraum_tuer alias Abstellraum Tür
attr abstellraum_tuer devStateIcon open:fts_door_right_open closed:fts_door_right
attr abstellraum_tuer group Serverraum
attr abstellraum_tuer icon status_locked
attr abstellraum_tuer room Alle
attr abstellraum_tuer stateFormat { sprintf("%s", ReadingsVal("abstellraum_tuer","status2",0)) ;; }
define Timer_abstellraum_tuer at +*00:00:10 get abstellraum_tuer getdata
define FileLog_abstellraum_tuer FileLog ./log/Daten-%Y.log abstellraum_tuer
attr FileLog_abstellraum_tuer logtype text

define act_on_abstellraum_tuer notify abstellraum_tuer {\
  if (ReadingsVal("abstellraum_tuer","status",0) eq "on") {\
    fhem("setreading abstellraum_tuer status2 closed")\
    }\
    else {\
        if (ReadingsVal("abstellraum_tuer","status",0) eq "off") {\
    fhem("setreading abstellraum_tuer status2 open")\
        }\
  }\
}


define xbmcWoZi XBMC 192.168.0.55 tcp wohnzimmer PASSWORDXXX
attr xbmcWoZi devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
attr xbmcWoZi pingInterval 60

define NTFY_xbmcWoZi_all notify xbmcWoZi:.* { \
   Log 1, "Info: Device '@': Event '%'";; \
}
attr NTFY_xbmcWoZi_all group XBMC


define Handy PRESENCE lan-ping 192.168.0.51
attr Handy event-min-interval presence:1800
attr Handy event-on-change-reading presence
attr Handy icon time_statistic
attr Handy room Alle
define Handy_Log FileLog ./log/Anwesenheit.log Handy

define Arbeitsplatz PRESENCE lan-ping home
attr Arbeitsplatz icon time_statistic
attr Arbeitsplatz room Alle

define TV PRESENCE lan-ping 192.168.0.55
attr TV icon time_statistic
attr TV room Alle

define Dexter PRESENCE lan-ping dexter
attr Dexter icon time_statistic
attr Dexter room Alle


define rgr_Bewohner RESIDENTS
define germany holiday
define anyViews Dashboard
attr anyViews dashboard_tab1groups Sonne
attr anyViews dashboard_tab1name Test
attr anyViews dashboard_tabcount 1
define rr_Florian ROOMMATE rgr_Bewohner
attr rr_Florian alias Status
attr rr_Florian devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home
attr rr_Florian group Florian
attr rr_Florian icon people_sensor
attr rr_Florian rr_realname alias
attr rr_Florian rr_wakeupDevice rr_Florian_wakeuptimer1
attr rr_Florian sortby 1
attr rr_Florian webCmd state
define avg_1 average .*:(temperature|humidity|pressure|temp_c|wind|absFeuchte|dewpoint).*
define Alarm Alarm
attr Alarm statedisplay table
define Alarm_weblink weblink htmlCode {Alarm_Html("Alarm")}
attr Alarm_weblink room AlarmRoom
define anyViews_weblink weblink htmlCode {DashboardAsHtml("anyViews")}
attr anyViews_weblink room DashboardRoom

define watchdog_Anwesenheit watchdog Handy:absent 00:01 Handy:present set rrFlorian state gone
attr watchdog_Anwesenheit regexp1WontReactivate 1

define SVG_FileLog_innen_1 SVG FileLog_innen:SVG_FileLog_innen_1:CURRENT
attr SVG_FileLog_innen_1 room Alle_Graph


Ich habe bereits versucht, herauszufinden, welches Module oder welche Abfrage dafür verantwortlich ist, jedoch kein Problem oder Fehler gefunden.
Mittels perfmon und apptime konnte ich auch nichts finden.

Ist das normal, dass die Ladezeit des Frontends von den Abfragen im Backend abhängig ist?
Hat jemand einen Tipp für mich?

FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

marvin78

Nein. Das ist nicht normal. Deine Hardware und dein System müsstest du jedoch etwas präziser beschreiben, um dazu genaueres sagen zu können. Ich nehme an bei dir gibt es ein paar Blocker. Dass apptime dir gar nichts liefert, kann in dem Fall jedoch eigentlich nicht sein. Falls es wirklich so ist, dann sollten die Probleme außerhalb von FHEM liegen. Poste doch mal das Ergebnis von einem halben oder ganzen Tag apptime.

Florian_GT

Hi,

bei der Hardware handelt es sich um eine Virtuelle Maschine auf einem Proxmox Host. Da gibt es aus meiner Sicht keine Probleme.
Andere Applikationen laufen einwandfrei. Auch Fhem lief am Anfang sehr gut, nur je mehr ich konfigurierte, desto schlechter wurde es. Jetzt ist es unerträglich.

Also was mir auffällt ist, dass schon wenn ich per telnet eine Verbindung zu fhem aufbaue, um apptime abzufragen, die Verbindung zwischendurch komplett für einige Sekunden hängt.

Hier mal ein Auszug von Apptime:

fhem> apptime

                                name             function    max  count    total  average maxDly
                            xbmcWoZi           XBMC_Ready   3003    475    27015    56.87      0 HASH(xbmcWoZi)
                         tmr-at_Exec      HASH(0x22b7028)    817     57    46144   809.54   4603 HASH(Timer_server_system)
                       server_system       ECMDDevice_Set    815    126    92123   731.13      0 HASH(server_system); server_system; messen
                        tmr-WakeUpFn      HASH(0x2d72f48)    813      1      813   813.00   2374 HASH(0x2d72f48)
                  server_festplatten       ECMDDevice_Set    813    132    92934   704.05      0 HASH(server_festplatten); server_festplatten; messen
                        tmr-WakeUpFn      HASH(0x2e1fa00)    811      1      811   811.00   2417 HASH(0x2e1fa00)
                        tmr-WakeUpFn      HASH(0x2e24b58)    811      1      811   811.00   2365 HASH(0x2e24b58)
                         tmr-at_Exec      HASH(0x222d1b8)    811     58    46838   807.55   2218 HASH(Timer_aussen)
                         tmr-at_Exec      HASH(0x22b9040)    811     57    46130   809.30   6219 HASH(Timer_server_raum1)
                        tmr-WakeUpFn      HASH(0x29fd2e8)    810      1      810   810.00   2355 HASH(0x29fd2e8)
                        tmr-WakeUpFn      HASH(0x2d60170)    810      1      810   810.00   2363 HASH(0x2d60170)
                        tmr-WakeUpFn      HASH(0x2d8f258)    810      1      810   810.00   2364 HASH(0x2d8f258)
                        tmr-WakeUpFn      HASH(0x2d9db60)    810      1      810   810.00   2397 HASH(0x2d9db60)
                        tmr-WakeUpFn      HASH(0x2ddfd60)    810      1      810   810.00   2385 HASH(0x2ddfd60)
                        tmr-WakeUpFn      HASH(0x2de9af8)    810      1      810   810.00   2360 HASH(0x2de9af8)
                        tmr-WakeUpFn      HASH(0x2e1d2a0)    810      1      810   810.00   2384 HASH(0x2e1d2a0)
                        tmr-WakeUpFn      HASH(0x2e202d0)    810      1      810   810.00   5373 HASH(0x2e202d0)
                        tmr-WakeUpFn      HASH(0x2e2e2c8)    810      1      810   810.00   2362 HASH(0x2e2e2c8)
                        tmr-WakeUpFn      HASH(0x2e30e60)    810      1      810   810.00   2362 HASH(0x2e30e60)
                        tmr-WakeUpFn      HASH(0x2e34478)    810      1      810   810.00   2354 HASH(0x2e34478)
                         tmr-at_Exec      HASH(0x22b7748)    810     57    46126   809.23   5411 HASH(Timer_server_festplatten)
fhem>


Perfmon liefert da auch einige sleep delays im Log, ich kann jedoch nicht wirklich sagen woher das kommt, und ob das normal ist, oder nicht.

Log:

2015.04.12 16:13:06 3: Timer_abstellraum_tuer: getdata status: off
2015.04.12 16:13:06 1: Perfmon: possible freeze starting at 16:13:03, delay is 3.998
2015.04.12 16:13:07 2: After sleep: getdata state: T: 27.75
2015.04.12 16:13:07 2: After sleep: getdata state: T: 21.13
2015.04.12 16:13:09 3: Timer_bmp085_station: getdata T: 21 P: 1085.7
2015.04.12 16:13:09 1: Perfmon: possible freeze starting at 16:13:07, delay is 2.506
2015.04.12 16:13:11 2: After sleep: getdata state: T: 16.56
2015.04.12 16:13:11 1: Perfmon: possible freeze starting at 16:13:10, delay is 1.149
2015.04.12 16:13:11 2: After sleep: getdata state: T: 19.13
2015.04.12 16:13:11 3: Timer_bmp085_station: getdata T: 21 P: 1085.6
2015.04.12 16:13:11 2: After sleep: getdata state: T: 23.88
2015.04.12 16:13:12 2: After sleep: getdata state: T: 27.75
2015.04.12 16:13:14 3: Timer_dht11_station: dht22 state: T: 21.0 H: 36.0
2015.04.12 16:13:14 3: Timer_server_dht11: dht22 state: T: 21.0 H: 36.0
2015.04.12 16:13:16 3: Timer_server_pwm1: getdata pwm: 0
2015.04.12 16:13:16 3: Timer_pin1: getdata status: off
2015.04.12 16:13:16 3: Timer_pin2: getdata status: off
2015.04.12 16:13:16 3: Timer_pin3: getdata status: off
2015.04.12 16:13:16 3: Timer_pin4: getdata status: off
2015.04.12 16:13:16 3: Timer_abstellraum_tuer: getdata status: off
2015.04.12 16:13:16 1: Perfmon: possible freeze starting at 16:13:13, delay is 3.934
2015.04.12 16:13:16 2: After sleep: getdata state: T: 21.13
2015.04.12 16:13:17 3: Timer_bmp085_station: getdata T: 21 P: 1085.7
2015.04.12 16:13:19 1: Perfmon: possible freeze starting at 16:13:17, delay is 2.423
2015.04.12 16:13:21 3: Timer_bmp085_station: getdata T: 21 P: 1085.6
2015.04.12 16:13:21 2: After sleep: getdata state: T: 16.56
2015.04.12 16:13:21 1: Perfmon: possible freeze starting at 16:13:20, delay is 1.108
2015.04.12 16:13:21 2: After sleep: getdata state: T: 19.13
2015.04.12 16:13:21 2: After sleep: getdata state: T: 23.88
2015.04.12 16:13:22 2: After sleep: getdata state: T: 27.75
2015.04.12 16:13:24 3: Timer_dht11_station: dht22 state: T: 21.0 H: 36.0
2015.04.12 16:13:24 3: Timer_bmp085_station: getdata T: 21.1 P: 1085.6
2015.04.12 16:13:24 3: Timer_server_dht11: dht22 state: T: 21.0 H: 36.0


Sind die Delays normal oder nicht?

Also das einige Abfragen mal länger brauchen, und der Prozess darauf wartet, halte ich für normal und ok. Was ich jedoch nicht verstehe, warum dann der fhem telnet Server oder gar das Fhem Frontend hängt. Solche sachen sind doch getrennt und sind voneinander unabhängig...
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

marvin78

Ich kenne mich mit deinen verwendeten Modulen leider nicht aus. Wie es ausieht, sind die aber im Durchschnitt alle nicht so wahnsinnig "schnell". Da sind hohe Durchschnittswerte dabei. Was mit noch einfällt: Hast du eventuell ein paar falsch verwendete sleeps in deiner Konfiguration? Wie lange hast du apptime laufen lassen?

Florian_GT

Apptime habe ich ca. 30 Minuten laufen lassen.

Ich habe gerade die sleeps alle aus der Konfiguration entfernt, jetzt habe ich Ladezeiten von mal 2s und mal 4s.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

marvin78

Wenn du ein perl sleep verwendest, ist das IMMER blockierend. Verwendest du ein FHEM sleep mit einem Befehl direkt dahinter, wird intern ein at angelet und es blockiert nicht.

der-Lolo

schau mal nach wie groß deine Datei eventTypes.txt ist...

marvin78

Zitat von: der-Lolo am 12 April 2015, 16:38:05
schau mal nach wie groß deine Datei eventTypes.txt ist...

Guter Punkt. eventTypes habe ich schon etwas länger gelöscht, deshalb kam es mir nicht in den Sinn.

Florian_GT

Zitat von: marvin78 am 12 April 2015, 16:39:15
Guter Punkt. eventTypes habe ich schon etwas länger gelöscht, deshalb kam es mir nicht in den Sinn.

Hi,

die ist 8k groß.

fhem:/fhem/trunk/fhem/log# ll
insgesamt 924
-rw-r--r-- 1 root root    342 Apr 12 16:24 Anwesenheit.log
-rw-r--r-- 1 root root 442469 Apr 12 16:38 Daten-2015.log
-rw-r--r-- 1 root root   5021 Apr 12 16:24 eventTypes.txt
-rw-r--r-- 1 root root 447469 Apr 12 16:38 fhem-2015-04.log
-rw-r--r-- 1 root root  24895 Apr 12 16:24 fhem.save
-rw-r--r-- 1 root root      0 Apr 12 15:31 Twilight-2015.log
fhem:/fhem/trunk/fhem/log# du -sh *
4,0K    Anwesenheit.log
440K    Daten-2015.log
8,0K    eventTypes.txt
444K    fhem-2015-04.log
28K     fhem.save
0       Twilight-2015.log
fhem:/fhem/trunk/fhem/log#


Ich habe zwischendurch schon alle Daten im log Ordner gelöscht, um sicher zu stellen, dass es nicht an zu vielen zwischengespeicherten Daten liegt.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

marvin78

Im Grunde ist dein apptime schon ein ganz guter Hinweis. Im Schnitt stehen in allen Zeilen recht hohe Werte und die Summe macht es vermutlich. Du könntest mal einen Test mit einer recht leeren oder der fhem.demo.cfg zu machen und schauen, wie performant dein System dann ist.

Florian_GT

Hi,

gesagt, getan... Mit der Demo Datei ist das ganze einwandfrei. Sprich ladezeit unter einer Sekunde.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

marvin78

Naja. Jetzt kannst du "einfach" hergehen und Schritt für Schritt deine Dinge in eine leere Config einbauen und schauen, ab wann es nicht mehr passt. Oder du wartest hier darauf, dass sich jemand meldet und bekannte Probleme mit deinen verwendeten Modulen meldet.

rudolfkoenig

Man sollte vorher noch den Aufruf einer Seite mit "attr global verbose 5" protokollieren. Ich wuesste auch gerne, was man unter "Webfrontend" versteht: FHEMWEB, FLOORPLAN, fronthem, etc, wie die angezeigte Seite aussieht, und wo der Browser laeuft.

eventTypes sollte sich neuerdings benehmen, wenn das nicht der Fall ist, bitte melden.

Florian_GT

Hi,

hier einmal die Verbose Level 5 Ausgabe:

015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34079 GET /fhem?room=Alle
2015.04.13 21:01:35 4: 19845:FHEMWEB:192.168.0.53:34079: /fhem?room=Alle / RL:6708 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34077 GET /fhem/pgm2/style.css
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34079 GET /fhem/pgm2/jquery-ui.min.css
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34077 GET /fhem/pgm2/jquery.min.js
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34072 GET /fhem/pgm2/jquery-ui.min.js
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34135 GET /fhem/pgm2/fhemweb_colorpicker.js
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34081 GET /fhem/pgm2/fhemweb.js
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34077 GET /fhem/pgm2/fhemweb_readingsHistory.js
2015.04.13 21:01:35 4: Connection accepted from FHEMWEB:192.168.0.53:34177
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34079 GET /fhem/pgm2/fhemweb_readingsGroup.js
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34177 GET /fhem/pgm2/fhemweb_knob.js
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34135 GET /fhem/pgm2/fhemweb_uzsu.js
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34072 GET /fhem/pgm2/fhemweb_sortable.js
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34081 GET /fhem/pgm2/dashboard.js
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34177 GET /fhem/pgm2/defaultCommon.css
2015.04.13 21:01:35 4: HTTP FHEMWEB:192.168.0.53:34072 GET /fhem/pgm2/dashboard_style.css
2015.04.13 21:01:36 4: HTTP FHEMWEB:192.168.0.53:34072 GET /fhem/images/default/icoEverything.png
2015.04.13 21:01:36 4: HTTP FHEMWEB:192.168.0.53:34079 GET /fhem/images/default/off.png
2015.04.13 21:01:36 4: HTTP FHEMWEB:192.168.0.53:34077 GET /fhem/images/default/fhemicon.png
2015.04.13 21:01:36 4: HTTP FHEMWEB:192.168.0.53:34072 GET /fhem?XHR=1&inform=type=status;filter=room=Alle;since=1428951694;fmt=JSON&timestamp=1428951696231


sieht aus meiner sicht eigentlich ok aus.

Ich habe inzwischen mal probiert, die 10s Timer auf 20s umzustellen. Das hat jetzt eine deutliche Verbesserung gebracht. Statt 4 Sekunden Ladezeit nur noch 0,5s und zu der Zeit, bei der die Timer laufen halt 1-3 Sekunden. Damit kann man ganz gut leben.

Aber kann man die Abfragen nicht einfach als Subprozess des Fhem Forken und so vom Webserver abkoppeln?

Ich benutze / meine das FHEMWEB.
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

rudolfkoenig

Der Aufruf zeigt einen kompletten Refresh, bei einem einfachen Seitenwechsel / An/Aus-Klick sollten weniger Dateien geladen werden. Das mit dem 10s/20s verstehe ich nicht, aber einen Aufruf, was < 1s fuer einen kompletten Refresh braucht, sehe ich nicht als Problem. Um genauer zu messen kann man global mseclog setzen.