| Einstellung | Einheit | Standardwert | Laufzeit* | Beschreibung | Tipp zur Optimierung |
|---|---|---|---|---|---|
| formula.queue.maxage | h | 24 | Ja | Die maximale Anzahl Stunden (kein garantierter Wert), die das Ausdruckswarteschlangenprotokoll aufbewahrt wird. Es werden nur die ausgeführten Ausdrücke bereinigt. Dies erfolgt mithilfe des Formelbereinigungsjobs. | Ausgeführte Warteschlangeneinträge in der Formelwarteschlangentabelle werden als Ausführungsprotokoll aufbewahrt. Dieses Protokoll dient zum Prüfen auf Ausführungsschleifen und zum Generieren von Statistiken. Wenn keine Statistiken benötigt werden, kann dieser Wert in einer Konfiguration mit hohem Durchsatz reduziert werden, um die Tabellengröße klein zu halten. Dieser Wert darf in keinem Fall auf null gesetzt werden, da für die korrekte Schleifenprüfung ein Protokoll für mindestens eine Stunde erforderlich ist. |
| formula.queue.maxsize | Einträge | 500000 | Ja | Die gewünschte maximale Anzahl Einträge in der Ausdruckswarteschlange. Der Bereinigungsjob versucht, die Anzahl Einträge unter diesem Wert zu halten, indem das Protokoll bereinigt wird. Es werden nur die ausgeführten Ausdrücke bereinigt. Diese Einstellung überschreibt die formula.queue.maxage-Einstellung. | Dieser Wert kann verringert werden, um die Größe der Formelwarteschlange während Zeiten mit hoher Auslastung klein zu halten und ansonsten das Anwachsen des Protokolls zu verhindern. Als guter Näherungswert sollte dieser Wert geringfügig unter dem durchschnittlichen Durchsatz während des formula.queue.maxage-Zeitraums liegen. |
| formula.execution.batch.size | Einträge | 30 | Ja | Die Anzahl Ausdruckswarteschlangeneinträge, die während jedes Zuordnungslaufs für einen einzigen Thread zugeordnet werden. Die Einträge werden als "started" (gestartet) markiert. Der Thread durchläuft diese Einträge und schließt sie ab, bevor ein neuer Stapel zugeordnet wird. | Dies ist eine wichtige Einstellung. Hintergrundinformation: Ausdrücke werden gleichzeitig ohne feste Reihenfolge in mehreren Threads in mehreren Knoten ausgeführt, aber immer in chronologischer Reihenfolge in Bezug auf die Beachtung von Abhängigkeiten. Wenn beispielsweise zwei Ausdrücke in der Warteschlange nicht zusammengehören, müssen sie nicht in der Reihenfolge ausgeführt werden, in der sie hinzugefügt wurden. Demzufolge werden Ausdruckseinträge möglicherweise nicht ausgeführt, wenn sie Instanzen des Ausdruckseintrags sind oder Einträge, von deren Werten der Ausdruckseintrag abhängig ist und die nicht vor dem Ausdruck ausgeführt werden. Aufgrund dieser Tatsache und der Nebenläufigkeit ist eine Zuordnung erforderlich, um Kollisionen, eine falsche Reihenfolge und redundante Verarbeitung zu verhindern. Da die Zuordnung ein kostenintensiver Vorgang ist, werden zusammen mit der oben genannten Anforderung mehrere Ausdrücke unter der Bedingung zugeordnet, dass sie in einer bestimmten Reihenfolge ausgeführt werden. Werden viele Ausdrücke zugeordnet, wird der Zuordnungsaufwand gering gehalten, die Nebenläufigkeit jedoch "behindert" und umgekehrt. Als allgemeine Regel gilt, dass dieser Wert niedrig gehalten werden sollte, wenn die Ausdrücke lange Abhängigkeitsketten bilden, und erhöht werden sollte, wenn die Abhängigkeitsketten kurz sind oder nur wenige Abhängigkeiten bestehen. Sie können diesen Wert zur Laufzeit ändern; daher sollte er optimiert werden, bis ein angemessener optimaler Wert gefunden wird. Werte kleiner als 10 oder größer als 200 sind selten optimal. |
| formula.cleanup.interval | ms | 1800000 | Nein | Die Häufigkeit, mit der die Ausdruckswarteschlange bereinigt wird. Dabei werden die maxage- und maxsize-Einstellungen umgesetzt. Normalerweise erfolgt nur eine Warteschlangenbereinigung. Die erste Bereinigung erfolgt, wenn der Server gestartet wird; an diesem Punkt wird eine spezielle Pflege ausgeführt. Außerdem wird alle zwei Wochen eine Integritätsprüfung für Zeitgeberausdruck ausgeführt (über Nacht). | Meist ist der Standardwert angemessen. Wenn der Durchsatz hoch ist, dauert die Bereinigung länger, sollte jedoch häufiger ausgeführt werden; wenn der Durchsatz niedrig ist, verhält es sich umgekehrt. Beachten Sie, dass dieser Wert nicht zu sehr erhöht wird, da dies zu Ausführungsausfällen oder schlechter Leistung führen könnte, wenn die Arbeitslast sich plötzlich deutlich erhöht (z. B. nach einem Import oder einer Attributhinzufügung). |
| formula.background.interval | ms | 10000 | Nein | Die Häufigkeit, mit der die Ausdruckswarteschlange auf neue, nicht zugeordnete Ausdrücke überprüft wird, die ausgeführt werden müssen. Wenn ein Stapel abgeschlossen ist, wird ohne Berücksichtigung des Intervalls sofort eine neue Überprüfung ausgeführt. Wenn die Warteschlange noch nicht ausgewertete Einträge enthält, wenn das nächste Intervall beginnt, wird ein neuer Worker-Thread gestartet, um den Aufwand zu erhöhen. | In früheren Versionen von Rational Focal Point erfolgte die Ausführung asynchron und sofort. Wenn Ausdrücke in die Datenbank versetzt wurden, war dies nicht mehr ohne das Risiko von Deadlocks möglich. Dies ist das Intervall, mit dem die Ausdruckswarteschlange auf neue auszuführende Ausdrücke überprüft wird, d. h. die maximale Zeit (zusammen mit der Ausführungszeit), die der Benutzer warten muss (Lesen: Aktualisieren), bis ein Ausdruck ausgeführt wird. Das Abfragen nicht ausgewerteter Warteschlangeneinträge ist nicht kostenintensiv, wenn keine Einträge vorhanden sind, und demzufolge könnte die benötigte Zeit kurz sein. Wenn das Intervall jedoch zu kurz ist, verbraucht es unnötig Ressourcen. Dies hat auch Auswirkungen auf die Lastverlaufssteuerung bei der Nebenläufigkeit. Wenn der Worker-Thread, der im vorherigen Intervall gestartet wurde, nicht innerhalb des Intervalls abgeschlossen wird, wird ein weiterer Thread (bis der Wert für thread.per.nodes erreicht ist) gestartet. Wenn die Lastverlaufssteuerung zu langsam ist oder wenn kürzere Latenzzeiten bei der Auswertung erforderlich sind, können Sie diesen Wert reduzieren. Wenn Ausdrücke nur selten verwendet werden, können Sie den Wert geringfügig erhöhen. |
| formula.max.background.threads.per.node | Anzahl | 2 | Nein | Die maximale Anzahl gleichzeitig ausgeführter Threads, die Ausdrücke für jeden Knoten ausführen. Die tatsächliche maximale Anzahl ist dynamisch davon abhängig, ob freie Threads im Anwendungsthread-Pool vorhanden sind. | Aufgrund der bei background.interval beschriebenen Lastverlaufssteuerung bei der Nebenläufigkeit wird die Anzahl der Ausdrucksauswertungsthreads im Knoten für jedes Intervall erhöht, wenn weitere Arbeit auszuführen ist. Dies erfordert freie Threads im Anwendungsthread-Pool, der automatisch im Hinblick auf die Anzahl CPU-Cores (virtuelle oder physische) optimiert wird. Außerdem gilt die Einschränkung, dass nicht der letzte Thread im Pool verbraucht werden darf. Sie können ausprobieren, welcher Wert am besten geeignet ist. Eine Verbesserung der Leistung kann jedoch nicht garantiert werden, da dies in hohem Maße von der Fähigkeit der Datenbank zur Nebenläufigkeit abhängig ist. Ein Anzeichen für eine zu geringe Nebenläufigkeit ist, dass die Warteschlange sehr häufig nicht ausgewertete Ausdrücke enthält und die Datenbanklast gering ist. |
| formula.cleanup.enabled | boolesch | true | Ja | Die Bereinigung der Ausdruckswarteschlange ist standardmäßig aktiviert. Sie muss nur für Debuggingzwecke oder zur Ausführung von Leistungsmessungen inaktiviert werden, bei denen eine Bereinigung ausgeschlossen werden muss. | Für diese Einstellung muss keine Optimierung erfolgen. Sie darf in keinem Fall geändert werden. Behalten Sie den Standardwert "true" bei. |
* Laufzeit gibt an, ob die Anwendungseinstellung während der Laufzeit wirksam wird (angegeben durch "Ja") oder ob sie nur beim Start wirksam wird (angegeben durch "Nein").