Hallo,
ich verwende zwei Kalender in Fhem die, wenn ich die Ausgabe von apptime richtig interpretiere, schuld daran sind, dass mein Fhem immer wieder sekundenlange Gedenkpausen einlegt:
name function max count total average maxDly
tmr-Calendar_Wakeup HASH(0xf98c78) 1766 137 211982 1547.31 3014 HASH(GoogleHotelCalendar)
tmr-Calendar_Wakeup HASH(0x1ba4080) 1125 139 144239 1037.69 3097 HASH(Abfall)
Die beiden Kalender sind mit Abstand die beiden Top-Verursacher von Delays.
Der erste Kalender ist ein Google Kalender, der zweite eine in /opt/fhem liegende .ics Datei. Kann ich irgendwie verhindern, dass die beiden Kalender ständig das System kurzzeitig zum Stillstand bringen?
Gruß,
Reiner
Hi,
Ich habe alle potenziellen Verzögerer unter anderem Calendar und diverse Messagingdienste in eine separate fhem Instanz verbannt, diese Binde ich per fhem2fhem an und hole mir die die ausgelagerten Geräte per clonedummy in die Hauptinstanz...
Greetz
Eldrik
Mmmh... das hört sich extrem aufwändig an. Ich hatte gehofft, dass es irgendwie einfacher/eleganter geht.
Kann man irgendwie Debuggen, wo im Modul die Delays auftreten?
habe 3 googlekalender und einen lokalen und keine stillstände. hast du mal einen neuen erstellt (bei google) und mit dem, nur dem , getestet? ich musste meinen googlekalender auch schon 1-2 mal neu machen weil er rum gesponnen hatte...
leider steht nicht da was du für hardware als server einsetzt
Neu anlegen des Google Kalender habe ich noch nicht versucht. Da aber auch der auf einem lokalen .ics File aufbauende Kalender das gleiche Verhalten zeigt, scheint es ja eher am Modul zu liegen, oder?
oder deinem system. gefühlt sind es meist die fb oder pi user die blocking probleme haben
wie sieht dein aktualisierungsintervall aus? default ist ja alle 1h, was wohl bei den wenigsten leuten sinn macht außer sie steuern fhem über den calender.
ein anpassen auf zb 24h würde die delays (im forum ist unter calendar blockieren / blocking einiges dazu zu finden) zu mindest reduzieren.
den test mit einem neuen calender würde ich dennoch machen (geht fix, sind ja nur 2 klicks + ein paar dummy termine und bringt ggf etwas).
Sorry, hatte vergessen das System zu nennen: Nachdem ich mit einem Raspberry Pi B+ die Probleme bemerkt hatte, habe ich das ganze mal auf einem BeagleBoneBlack ausprobiert. Auf beiden Systemen verhält es sich gleich.
Update Intervall bei beiden Kalendern ist der default Wert von 1h. Beim Müllkalender wäre ein längeres Intervall kein Problem. Der Google Kalender ist aber an die Heizungsteuerung gekoppelt, da wäre mir 1h schon ganz recht. Die Freezes im System treten aber bei mir auch deutlich öfter auf als nur 1-2 mal pro Stunde. Eher so gefühlt alle 1-5 Minuten.
aber so oft aktualisiert der kalender ja nicht somi würde ich die aktualisierung des kalenders nicht als grund sehen. hast du mal das logging erhöht und die logs zu diesen zeitpunkten der freezes durchgeschaut? alle 1-5 minuten muss was anderes sein...
du kannst testweise auch mal die kalender aus der config nehmen (inkl allem wa dazu gehört wie zb die steuerung der heizung ) und schauen die delays dann noch da sind.
Zitat von: Reiner am 27 Juli 2015, 07:03:07
Eher so gefühlt alle 1-5 Minuten.
Hi
installiere Dir perfmon. Das ist genau dazu da um "gefühlt" zu "gemessen" zu machen :)
vg
joerg
perfmon habe ich bereits installiert:
2015.07.01 00:01:03 1: Perfmon: possible freeze starting at 00:01:00, delay is 3.014
2015.07.01 00:02:07 1: Perfmon: possible freeze starting at 00:02:04, delay is 3.015
2015.07.01 00:03:11 1: Perfmon: possible freeze starting at 00:03:08, delay is 3.014
2015.07.01 00:04:14 1: Perfmon: possible freeze starting at 00:04:12, delay is 2.245
2015.07.01 00:05:18 1: Perfmon: possible freeze starting at 00:05:15, delay is 3.015
2015.07.01 00:06:22 1: Perfmon: possible freeze starting at 00:06:19, delay is 3.017
2015.07.01 00:07:26 1: Perfmon: possible freeze starting at 00:07:23, delay is 3.015
2015.07.01 00:08:30 1: Perfmon: possible freeze starting at 00:08:27, delay is 3.015
2015.07.01 00:09:33 1: Perfmon: possible freeze starting at 00:09:31, delay is 2.455
2015.07.01 00:10:37 1: Perfmon: possible freeze starting at 00:10:34, delay is 3.014
2015.07.01 00:11:41 1: Perfmon: possible freeze starting at 00:11:38, delay is 3.014
2015.07.01 00:12:45 1: Perfmon: possible freeze starting at 00:12:42, delay is 3.015
2015.07.01 00:13:48 1: Perfmon: possible freeze starting at 00:13:46, delay is 2.344
2015.07.01 00:14:52 1: Perfmon: possible freeze starting at 00:14:49, delay is 3.014
2015.07.01 00:15:55 1: Perfmon: possible freeze starting at 00:15:52, delay is 3.074
2015.07.01 00:16:58 1: Perfmon: possible freeze starting at 00:16:56, delay is 2.584
2015.07.01 00:18:02 1: Perfmon: possible freeze starting at 00:17:59, delay is 3.014
2015.07.01 00:18:37 1: Perfmon: possible freeze starting at 00:18:36, delay is 1.05
2015.07.01 00:19:06 1: Perfmon: possible freeze starting at 00:19:03, delay is 3.014
2015.07.01 00:20:10 1: Perfmon: possible freeze starting at 00:20:07, delay is 3.014
2015.07.01 00:21:14 1: Perfmon: possible freeze starting at 00:21:11, delay is 3.014
2015.07.01 00:22:17 1: Perfmon: possible freeze starting at 00:22:15, delay is 2.654
2015.07.01 00:23:21 1: Perfmon: possible freeze starting at 00:23:18, delay is 3.014
2015.07.01 00:24:24 1: Perfmon: possible freeze starting at 00:24:22, delay is 2.244
2015.07.01 00:25:28 1: Perfmon: possible freeze starting at 00:25:25, delay is 3.014
2015.07.01 00:26:32 1: Perfmon: possible freeze starting at 00:26:29, delay is 3.014
2015.07.01 00:27:36 1: Perfmon: possible freeze starting at 00:27:33, delay is 3.014
2015.07.01 00:28:40 1: Perfmon: possible freeze starting at 00:28:37, delay is 3.014
2015.07.01 00:29:44 1: Perfmon: possible freeze starting at 00:29:41, delay is 3.014
2015.07.01 00:30:48 1: Perfmon: possible freeze starting at 00:30:45, delay is 3.014
2015.07.01 00:31:52 1: Perfmon: possible freeze starting at 00:31:49, delay is 3.014
2015.07.01 00:32:56 1: Perfmon: possible freeze starting at 00:32:53, delay is 3.014
2015.07.01 00:34:00 1: Perfmon: possible freeze starting at 00:33:57, delay is 3.014
2015.07.01 00:35:04 1: Perfmon: possible freeze starting at 00:35:01, delay is 3.014
2015.07.01 00:36:08 1: Perfmon: possible freeze starting at 00:36:05, delay is 3.014
2015.07.01 00:37:11 1: Perfmon: possible freeze starting at 00:37:09, delay is 2.435
2015.07.01 00:38:14 1: Perfmon: possible freeze starting at 00:38:12, delay is 2.974
2015.07.01 00:39:18 1: Perfmon: possible freeze starting at 00:39:15, delay is 3.014
2015.07.01 00:40:21 1: Perfmon: possible freeze starting at 00:40:19, delay is 2.494
2015.07.01 00:41:25 1: Perfmon: possible freeze starting at 00:41:22, delay is 3.014
2015.07.01 00:42:28 1: Perfmon: possible freeze starting at 00:42:26, delay is 2.834
2015.07.01 00:43:32 1: Perfmon: possible freeze starting at 00:43:29, delay is 3.014
2015.07.01 00:44:36 1: Perfmon: possible freeze starting at 00:44:33, delay is 3.014
2015.07.01 00:45:40 1: Perfmon: possible freeze starting at 00:45:37, delay is 3.014
2015.07.01 00:46:44 1: Perfmon: possible freeze starting at 00:46:41, delay is 3.014
2015.07.01 00:47:48 1: Perfmon: possible freeze starting at 00:47:45, delay is 3.014
2015.07.01 00:48:52 1: Perfmon: possible freeze starting at 00:48:49, delay is 3.013
2015.07.01 00:49:56 1: Perfmon: possible freeze starting at 00:49:53, delay is 3.014
2015.07.01 00:50:59 1: Perfmon: possible freeze starting at 00:50:57, delay is 2.344
2015.07.01 00:52:03 1: Perfmon: possible freeze starting at 00:52:00, delay is 3.014
2015.07.01 00:53:07 1: Perfmon: possible freeze starting at 00:53:04, delay is 3.014
2015.07.01 00:54:11 1: Perfmon: possible freeze starting at 00:54:08, delay is 3.013
2015.07.01 00:55:15 1: Perfmon: possible freeze starting at 00:55:12, delay is 3.014
2015.07.01 00:56:19 1: Perfmon: possible freeze starting at 00:56:16, delay is 3.014
2015.07.01 00:57:22 1: Perfmon: possible freeze starting at 00:57:20, delay is 2.574
2015.07.01 00:58:26 1: Perfmon: possible freeze starting at 00:58:23, delay is 3.014
2015.07.01 00:59:29 1: Perfmon: possible freeze starting at 00:59:27, delay is 2.544
2015.07.01 01:00:32 1: Perfmon: possible freeze starting at 01:00:30, delay is 2.774
2015.07.01 01:01:36 1: Perfmon: possible freeze starting at 01:01:33, delay is 3.013
2015.07.01 01:02:40 1: Perfmon: possible freeze starting at 01:02:37, delay is 3.104
2015.07.01 01:03:44 1: Perfmon: possible freeze starting at 01:03:41, delay is 3.014
2015.07.01 01:04:48 1: Perfmon: possible freeze starting at 01:04:45, delay is 3.014
2015.07.01 01:05:52 1: Perfmon: possible freeze starting at 01:05:49, delay is 3.014
2015.07.01 01:06:56 1: Perfmon: possible freeze starting at 01:06:53, delay is 3.014
2015.07.01 01:08:00 1: Perfmon: possible freeze starting at 01:07:57, delay is 3.014
2015.07.01 01:09:04 1: Perfmon: possible freeze starting at 01:09:01, delay is 3.014
2015.07.01 01:10:07 1: Perfmon: possible freeze starting at 01:10:05, delay is 2.264
2015.07.01 01:11:11 1: Perfmon: possible freeze starting at 01:11:08, delay is 3.014
2015.07.01 01:12:15 1: Perfmon: possible freeze starting at 01:12:12, delay is 3.014
2015.07.01 01:13:19 1: Perfmon: possible freeze starting at 01:13:16, delay is 3.014
2015.07.01 01:14:23 1: Perfmon: possible freeze starting at 01:14:20, delay is 3.014
2015.07.01 01:15:27 1: Perfmon: possible freeze starting at 01:15:24, delay is 3.014
2015.07.01 01:16:30 1: Perfmon: possible freeze starting at 01:16:28, delay is 2.325
2015.07.01 01:17:34 1: Perfmon: possible freeze starting at 01:17:31, delay is 3.014
2015.07.01 01:18:38 1: Perfmon: possible freeze starting at 01:18:35, delay is 3.014
Das ist mehr oder weniger im Minutentakt.
Da ich im Forum gelesen habe, das einem Perfmon sagen kann, ob etwas blockt, man dann aber apptime verwenden soll um herauszufinden, was blockt bin ich dort eben auf die beiden Kalender gestoßen.
Ja genau. Alles richtig gemacht. Der freeze ist ja super regelmäßig. Mach doch mal einen gegen check indem du beide Kalender raus nimmst.
Entweder disable wenn das Modul das unterstützt oder sonst ausnahmsweise in der cfg löschen. Vorher ein Backup der cfg machen !
Vg
Joerg
Ich habe die beiden Kalender mal in eine eigene Konfigurationsdatei verlegt und das include dazu auskommentiert. Leider scheint das keinen Einfluss auf die von Perfmon angezeigten Delays zu haben:
2015.07.27 15:03:37 1: Perfmon: possible freeze starting at 15:03:34, delay is 3.007
2015.07.27 15:03:46 1: Perfmon: possible freeze starting at 15:03:42, delay is 4.31
2015.07.27 15:04:40 1: Perfmon: possible freeze starting at 15:04:38, delay is 2.337
2015.07.27 15:05:22 1: Perfmon: possible freeze starting at 15:05:19, delay is 3.74
2015.07.27 15:05:44 1: Perfmon: possible freeze starting at 15:05:41, delay is 3.006
2015.07.27 15:06:48 1: Perfmon: possible freeze starting at 15:06:45, delay is 3.006
2015.07.27 15:07:52 1: Perfmon: possible freeze starting at 15:07:49, delay is 3.006
2015.07.27 15:08:56 1: Perfmon: possible freeze starting at 15:08:53, delay is 3.006
2015.07.27 15:10:00 1: Perfmon: possible freeze starting at 15:09:57, delay is 3.006
2015.07.27 15:11:04 1: Perfmon: possible freeze starting at 15:11:01, delay is 3.006
2015.07.27 15:12:07 1: Perfmon: possible freeze starting at 15:12:05, delay is 2.347
2015.07.27 15:13:11 1: Perfmon: possible freeze starting at 15:13:08, delay is 3.006
Mist! Damit könnte es wohl an was anderem liegen, obwohl die apptime Werte für die Kalender sprachen.
Nach ca. 15 Minuten sieht apptime so aus:
name function max count total average maxDly
FBPWRL546E FBAHA_Ready 3006 91 3006 33.03 0 HASH(FBPWRL546E)
HMLAN1 HMLAN_Read 168 10 775 77.50 0 HASH(HMLAN1)
HMLAN2 HMLAN_Read 79 9 222 24.67 0 HASH(HMLAN2)
n_batt_chk notify_Exec 16 10 26 2.60 0 HASH(n_batt_chk); HASH(OG_AZ_ThermostatDisplay_Climate)
WEB FW_Read 8 10 27 2.70 0 HASH(WEB)
HMCFGUSB HMLAN_Ready 7 91 8 0.09 0 HASH(HMCFGUSB)
tmr-FW_closeInactiveClients 6 1 6 6.00 6
FHEMWEB:192.168.1.105:54168 FW_Read 5 4 18 4.50 0 HASH(FHEMWEB:192.168.1.105:54168)
FHEMWEB:192.168.1.105:54169 FW_Read 5 3 14 4.67 0 HASH(FHEMWEB:192.168.1.105:54169)
FHEMWEB:192.168.1.105:54171 FW_Read 5 3 9 3.00 0 HASH(FHEMWEB:192.168.1.105:54171)
FHEMWEB:192.168.1.105:54172 FW_Read 5 3 13 4.33 0 HASH(FHEMWEB:192.168.1.105:54172)
FHEMWEB:192.168.1.105:54173 FW_Read 5 3 13 4.33 0 HASH(FHEMWEB:192.168.1.105:54173)
FHEMWEB:192.168.1.105:54175 FW_Read 5 2 9 4.50 0 HASH(FHEMWEB:192.168.1.105:54175)
FHEMWEB:192.168.1.105:54176 FW_Read 5 2 9 4.50 0 HASH(FHEMWEB:192.168.1.105:54176)
FHEMWEB:192.168.1.105:54174 FW_Read 4 2 8 4.00 0 HASH(FHEMWEB:192.168.1.105:54174)
FileLog_OG_Licht FileLog_Log 4 10 24 2.40 0 HASH(FileLog_OG_Licht); HASH(OG_WZ_Thermostat_Clima)
eventTypes eventTypes_Notify 4 10 24 2.40 0 HASH(eventTypes); HASH(OG_WZ_Thermostat_Clima)
FileLog_OG_Heizung FileLog_Log 3 10 17 1.70 0 HASH(FileLog_OG_Heizung); HASH(OG_WZ_Thermostat_Clima)
RolllaedenAuf notify_Exec 3 10 18 1.80 0 HASH(RolllaedenAuf); HASH(OG_WZ_Thermostat_Clima)
RolllaedenZu notify_Exec 3 10 18 1.80 0 HASH(RolllaedenZu); HASH(OG_WZ_Thermostat_Clima)
tmr-HMLAN_KeepAlive keepAlive:HMLAN2 3 1 3 3.00 2068 keepAlive:HMLAN2
Das FBPWRL546E kann es eigentlich auch nicht sein, da die Freezes schon länger vorhanden sind als dieses Device.
Hi,
ja, manchmal sind die Sachen anders als wie sie scheinen.
Das mit dem include, mach's später wieder rückgängig. Auf Dauer nix gut - die cfg soll fhem schreiben und gut iss.
Jetzt zur Fehlersuche aber ok.
Vielleicht fällt Dir ja was ein - muss eine Funktion sein die regelmäßig jede Minute zuschlägt.
Wenn nein könntest Du anfangen aus der Test cfg (original aufheben!) jeweils eine Funktion nach der anderen auszukommentieren. Von Selfmade + exotisch nach common. Denk an eigene at und notify.
Da der freeze ja regelmäßig auftritt braucht man ja auch nicht lange warten um das Ergebnis zu überprüfen. Stell evtl auch verbose in global auf 4 (oder 5), dann landet mehr im log. Da ergibt sich vielleicht auch ein Hinweis.
vg
joerg
Langsam falle ich vom Glauben ab: Ich habe Verbose auf 4 gesetzt und die Perfmon Meldungen im Minutentakt sind weg! Selbst nach einem restart mit Verbose 3 nicht mehr. Die Freezes in FHEMWEB sind aber weiter da. So ca. alle 1-2 Minuten friert die Weboberfläche für einige Sekunden ein.
das ist komisch. Verbose hat keine Auswirkungen auf perfmon. Wenn Du die freeze im Web weiterhin merkst, nur verbose und sonst nix geändert hast dann würde ich annehmen das perfmon schlicht nicht mehr läuft.
Da perfmon automatisch geladen wird hat auch die cfg keinen Einfluss, es (perfmon) muss sich nur im modul-dir befinden.
Die freeze waren (sind) mit drei Sekunden ja auch recht ausgeprägt. (perfmon zeigt ab 1000 msec an).
Kann Dir von hier aus keinen konkreten Tip geben - klingt aber in der Tat sehr nach "da passt was nicht"
vg
joerg