Zu viele gleichzeitige Scripte vermeiden

Hallo
Eigentlich ist auf meinem IPS ja nicht viel los. Auch das PHP Thread Monitoring ist eher leer.
Trotzdem finde ich dann und wann die typischen.
„Zu viele gemeinsame Scripte…“ und " Nachricht dauerte…" Meldungen im log.

Warum? Typischerweise stellt man runde Zahlen als Timerintervall ein. Also 5sec, 10sec, 30sec, 1min, bzw. deren Vielfachen. Genau diese Abstufung bewirkt aber das zb. jede volle Minute auch alle 5,10,30sec Timer ihre Scripte starten.
Würde man nur Primzahlen als Intervall nehmen wäre das Problem nicht gegeben da die ja keine gemeinsamen Teiler haben und so auch nie zum gleichen Zeitpunkt laufen können. Oft ist das auch möglich, weil zb. ob nun etwas alle 10sec oder 11sec abgefragt wird ist meist egal. Versteht ihr was ich meine ?
Leider ist es aber in der Natur des Technikers diese runde Intervalle zu wählen.

Da frage ich mich ob es nicht sinnvoll wäre wenn man IPS erlauben könnte bei unkritischen Intervallen selbsttätig etwas „Jitter“ hinzuzufügen um genau solche Situationen zu vermeiden.
Was meint ihr ?

Ich bin mir des Problems schon lange bewusst und versuche die Timer auch entsprechend zu setzen. Trotzdem rutschen immer mal einige durch und schon sind die PHP Therads voll.-
Anbei ein Screenshot. (es war sehr mühsam genau den richtigen Zeitpunkt fürn Screenshot zu erwischen)
Ein Kontrolle zeigte aber das obiges exakt zutrifft. das sind alles 5,10,30,60,120sec Timer.

Man könnte sich ein bisschen an die Prozesswelt in den Betriebssystemen anlehnen:

  • Script Prioritäten einführen (1-4)
  • und dann diese Scripte nach Prio abarbeiten. Prio1 Scripte werden wie gehabt behandelt, Prio2-4 werden dann absteigend nach Prio verzögert
  • je nach gewählter Prio könnte zusätzlich ein maximaler Jitter hinterlegt sein (Prio 1: 5% vom Zyklus, Prio 2: 20%, Prio 3: 30% von der Zykluszeit) nachdem das Scipt spätestens ausgeführt wird

Wenn das umgesetzt ist, sollte das Thema Geschichte sein… und ich vermute das es bei uns bei den meisten Scripten „egal“ ist, ob die etwas früher oder später ausgeführt werden. Aus diesem Grunde wäre die Default-Prio dann die 2 oder 3.

Allerdings bin ich mir nicht sicher, ob die Thematik ein echtes Problem darstellt und tatsächlich durch solche (aufwändigen) Lösungen behoben werden muss.

Grüße,
Markus

+1 für das Angehen dieses Themas.

Ob nun als einstellbare Zufallsverzögerung oder als Markierung eines Scriptes als „nicht-prioritär“ wäre mir völlig egal. Prio 1-4 empfinde ich schon als zuviel. Ein einfaches „Nicht-so-Wichtig“ und „Kann-Später-Nachgeholt-Werden“ würde reichen. Wichtig dabei ist lediglich, dass es einen TimeOut gibt. Eine nicht ausgeführte Türöffnung darf nicht einfach unkontrolliert 10min später nachgeholt werden, wenn ich nicht mehr vor der Tür stehe.

1 „Gefällt mir“