| formula.queue.maxage |
h |
24 |
Ja |
Die maximale Anzahl Stunden, die das
Ausdruckswarteschlangenprotokoll aufbewahrt wird. Es werden nur die
ausgeführten Ausdrücke bereinigt. Dies erfolgt mithilfe einer Formel (formula). |
Ausgeführte Einträge werden zum Zweck der
Ausdrucksstatistik
()
und der Prüfung auf Auswertungsschleifen aufbewahrt. Bei der Auswertung der
Schleifen kann dieser Wert in Konfigurationen mit hohem Durchsatz reduziert
werden, um die Tabellengröße klein zu halten. |
| formula.queue.maxsize |
Einträge |
500000 |
Ja |
Die maximale Anzahl Einträge in der
Ausdruckswarteschlange. Die Bereinigungstask ist dafür verantwortlich, 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 maxage-Einstellung. |
Um die Leistung zu verbessern, kann dieser Wert
optimiert werden, um die Größe des Warteschlangenprotokolls 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 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 und der Thread wird
ausgeführt und abgeschlossen, bevor ein neuer Stapel zugeordnet wird. |
Ausdrücke werden gleichzeitig in mehreren Threads in
mehreren Knoten ausgeführt, aber immer in chronologischer Reihenfolge in Bezug
auf die Beachtung von Abhängigkeiten. Wenn 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. Ausdruckseinträge können vom Wert eines anderen
Eintrags abhängig sein. Der Ausdruckseintrag wird möglicherweise nicht
ausgeführt, wenn die Instanz dieses Eintrags (der Wert, von dem der
Ausdruckseintrag abhängig ist) nicht vor dem Ausdruck ausgeführt wird.
Aufgrund dieser Tatsache und der Nebenläufigkeit ist eine Zuordnung
erforderlich, um Kollisionen, eine inkonsistente Reihenfolge und redundante
Verarbeitung zu verhindern. Da die Zuordnung kostenintensiv ist, werden mehrere
Ausdrücke unter der oben genannten Voraussetzung und der Bedingung, dass sie in
der angegebenen Reihenfolge ausgeführt werden, gleichzeitig zugeordnet. 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 sollten 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. Hierbei werden die maxage- und maxsize-Einstellungen umgesetzt.
Es wird nur die Warteschlangenbereinigung ausgeführt. 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.
Aus diesem Grund sollte dieser Wert nicht zu sehr erhöht werden, 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 "abgearbeitet" wurde, wenn das nächste Intervall beginnt, wird ein neuer
Worker-Thread gestartet, um den Aufwand zu verdoppeln. |
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 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 (plus Ausführungszeit), die
der Benutzer warten muss, bis ein Ausdruck ausgeführt wird. Wenn das Intervall
zu kurz ist, verbraucht es nur 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. Erfolgt die Lastverlaufssteuerung langsam, können Sie
diesen Wert reduzieren. Wenn nur selten Ausdrücke verwendet werden, können Sie
den Wert leicht 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. Beachten Sie, dass dies ein maximaler Wert ist. Er
erfordert freie Threads in einem Anwendungsthread-Pool, der automatisch im
Hinblick auf die Anzahl Kerne (virtuelle oder andere) optimiert wird. Er ist
außerdem dahingehend begrenzt, dass nicht der letzte Thread im Pool verbraucht
werden darf. Sie können mit diesem Wert experimentieren, da dies keine
Unterbrechung von Operationen zur Folge hat. 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 Ausdrücke
enthält, die nicht ausgewertet werden. |
| 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 nicht geändert werden; behalten Sie den Standardwert "true"
bei. |