Re: Openhab Performance erhöhen
Verfasst: 19. Dez 2020 12:00
Nein, "Befehle" werden ohnehin asynchron abgearbeitet. Du kannst die Anzahl der Threads erhöhen, die für die Abarbeitung der Rules zur Verfügung stehen, so dass dann mehr als 5 + 2 Rules zeitgleich abgearbeitet werden können. Nun kommt es aber extrem auf Deine Rules an, und es ist auch nicht gesagt, dass die Verzögerungen damit weg gehen.
Ich bin jetzt grade zu faul, nachzuschauen, ob ich das hier schon geschrieben habe... also vielleicht doppele ich mich selbst...
Wichtigste Regel beim Rule erstellen:
NIEMALS identische Time cron Ausdrücke in mehreren Rules verwenden! Falls viele Time cron Trigger verwendet werden, auch darauf achten, dass diese sich möglichst NIE überschneiden (z.B. indem alle zu unterschiedlichen Zeitpunkten innerhalb der vollen Minute auslösen)
Vermeide UNBEDINGT mehrere Rules mit System started als Trigger.
Vermeide grundsätzlich Rules mit identischem Trigger
Also keinesfalls so:
sondern lieber so:
nicht so:
sondern so:
NIEMALS Thread::sleep() mit Werten weit über 500 verwenden. NIEMALS Thread::sleep() mit hohen Werten innerhalb einer längeren Iteration verwenden!
while und for Blöcke möglichst vermeiden.
Vermeide wo immer möglich Rules, die zyklsich ausgeführt werden. Es gibt fast immer die Möglichkeit, auf ein anderes Ereignis zu reagieren.
Eine gute (komplexe) Rule sollte, wenn sie getriggert wurde, maximal nur wenige 100 Millisekunden laufen. Eine einfache Rule läuft eher einige 1/100 Sekunden...
Es gibt auch noch andere Ursachen für starke Verzögerungen, da wäre die Frage, welche Addons Du einsetzt.
Ich bin jetzt grade zu faul, nachzuschauen, ob ich das hier schon geschrieben habe... also vielleicht doppele ich mich selbst...
Wichtigste Regel beim Rule erstellen:
NIEMALS identische Time cron Ausdrücke in mehreren Rules verwenden! Falls viele Time cron Trigger verwendet werden, auch darauf achten, dass diese sich möglichst NIE überschneiden (z.B. indem alle zu unterschiedlichen Zeitpunkten innerhalb der vollen Minute auslösen)
Vermeide UNBEDINGT mehrere Rules mit System started als Trigger.
Vermeide grundsätzlich Rules mit identischem Trigger
Also keinesfalls so:
Code: Alles auswählen
rule "Zeit 1"
when
Time cron "0 * * * * ?"
then
// Code 1
end
rule "Zeit 2"
when
Time cron "0 0/5 * * * ?"
then
// Code 2
end
Code: Alles auswählen
rule "Zeit 1"
when
Time cron "0 * * * * ?"
then
// Code 1
end
rule "Zeit 2"
when
Time cron "5 0/5 * * * ?"
then
// Code 2
end
Code: Alles auswählen
rule "Rule 1"
when
Item myItem1 changed to ON
then
// Code 1
end
rule "Rule 2"
when
Item myItem1 changed to OFF
then
// Code 2
end
Code: Alles auswählen
rule "Rule 1"
when
Item myItem1 changed
then
if(newState == ON) {
// Code 1
} esle if(newState == OFF) {
// Code 2
}
end
while und for Blöcke möglichst vermeiden.
Vermeide wo immer möglich Rules, die zyklsich ausgeführt werden. Es gibt fast immer die Möglichkeit, auf ein anderes Ereignis zu reagieren.
Eine gute (komplexe) Rule sollte, wenn sie getriggert wurde, maximal nur wenige 100 Millisekunden laufen. Eine einfache Rule läuft eher einige 1/100 Sekunden...
Es gibt auch noch andere Ursachen für starke Verzögerungen, da wäre die Frage, welche Addons Du einsetzt.