Ein kurzes Update von meiner Seite:
Die Begrenzung der maximalen Telegramme funktioniert grundsätzlich, jedoch erscheint mir diese Art der Limitierung ungeeignet. Getestet habe ich ein Limit von 10, über 20, bis hin zu 50 Telegrammen pro Durchlauf. Bei 10 Telegrammen merkt man noch eine gewisse Trägheit der Pluginabarbeitung. Bei 50 Telegrammen entsprechend wesentlich flotter. Aufgefallen ist mir hierbei, dass die Ausführdauer sehr unterschiedlich ist. Manchmal laufen 50 Telegramme in 0.1 Sekunden durch. In seltenen Fällen werden aber auch 6-8 Sekunden benötigt.
Da die maximale Dauer eines jeden Plugins mit 10 Sekunden limitiert ist, könnte theoretisch monit nach nur 6-7 Telegrammen zuschlagen (zugegeben, wenn dies der Fall werden würde, hat man auch ganz andere Probleme
).
Sinnvoller erscheint mir daher eine zeitliche Limitierung. In Anlehnung an das "10 Sekunden Limit" pro Plugin, habe ich auch die While Schleife auf 10 Sekunden begrenzt. Somit würde im Worst Case nur ein Telegramm abgearbeitet werden und im Regelbetrieb ist eine schnelle Abarbeitung der auflaufenden Telegramme garantiert, ohne dass monit zuschlagen könnte.
Meine Anpassung sieht nun fogendermaßen aus (sinnvollerweise könnte man das Limit auch als Variable einbinden, habe ich mir jedoch erspart):
Die Begrenzung der maximalen Telegramme funktioniert grundsätzlich, jedoch erscheint mir diese Art der Limitierung ungeeignet. Getestet habe ich ein Limit von 10, über 20, bis hin zu 50 Telegrammen pro Durchlauf. Bei 10 Telegrammen merkt man noch eine gewisse Trägheit der Pluginabarbeitung. Bei 50 Telegrammen entsprechend wesentlich flotter. Aufgefallen ist mir hierbei, dass die Ausführdauer sehr unterschiedlich ist. Manchmal laufen 50 Telegramme in 0.1 Sekunden durch. In seltenen Fällen werden aber auch 6-8 Sekunden benötigt.
Da die maximale Dauer eines jeden Plugins mit 10 Sekunden limitiert ist, könnte theoretisch monit nach nur 6-7 Telegrammen zuschlagen (zugegeben, wenn dies der Fall werden würde, hat man auch ganz andere Probleme

Sinnvoller erscheint mir daher eine zeitliche Limitierung. In Anlehnung an das "10 Sekunden Limit" pro Plugin, habe ich auch die While Schleife auf 10 Sekunden begrenzt. Somit würde im Worst Case nur ein Telegramm abgearbeitet werden und im Regelbetrieb ist eine schnelle Abarbeitung der auflaufenden Telegramme garantiert, ohne dass monit zuschlagen könnte.
Meine Anpassung sieht nun fogendermaßen aus (sinnvollerweise könnte man das Limit auch als Variable einbinden, habe ich mir jedoch erspart):
Code:
my $stime = time(); while (($select->can_read(.1)) and (time() < $stime+10)) { # EIB Packet processing
Kommentar