Mengenverarbeitung im DBQueue Prozessor
Tabelle 187: Konfigurationsparameter für die Mengenverarbeitung im DBQueue Prozessor
QBM | DBQueue | DefaultRuntime |
Der Konfigurationsparameter legt fest, wie groß das Laufintervall des DBQueue Prozessors sein soll. Der Standardwert ist 90 Sekunden. |
QBM | DBQueue | ChangeLimitMin |
Der Konfigurationsparameter definiert den unteren Grenzwert für Änderungen (Einfügen, Ändern oder Löschen) innerhalb einer einzelnen Operation. Der Standardwert ist 3000. |
QBM | DBQueue | ChangeLimitMax |
Der Konfigurationsparameter definiert den oberen Grenzwert für Änderungen (Einfügen, Ändern oder Löschen) innerhalb einer einzelnen Operation. Der Standardwert ist 50000. |
Um die Gesamtzeit der Verarbeitung der DBQueue Aufträge zu reduzieren, sind einige der Prozeduren des DBQueue Prozessors für die Mengenverarbeitung gekennzeichnet. Sind mehrere Einträge für einen derart gekennzeichneten Auftrag in der DBQueue vorhanden, dann schaltet der DBQueue Prozessor von Einzelverarbeitung auf Mengenverarbeitung.
Es ist ein Mechanismus implementiert, anhand dessen entschieden wird, ob die Umstellung auf Mengenverarbeitung gegenüber der Einzelverarbeitung zu einer Zeitersparnis führen würde. Dazu werden zunächst 25 Einzelverarbeitungen eines Auftrages ausgeführt und die Verarbeitungszeiten ermittelt. Alle weiteren Einträge eines Auftrages, werden über Mengenverarbeitung abgearbeitet und die minimale und maximale Ladezeit für eine rentable Mengenverarbeitung bestimmt. Die Aktualisierung der Ladezeiten erfolgt durch ein selbstoptimierendes Berechnungsverfahren. Das eingesetzte Verfahren hat zur Folge, dass sich der DBQueue Prozessor erst einschwingen muss, insbesondere nach einer initialen Schemainstallation oder nach Systemänderungen wie beispielsweise Speicherzuwachs des Datenbankservers.
Über den Konfigurationsparameter QBM | DBQueue | DefaultRuntime können Sie festlegen, wie groß das Laufintervall des DBQueue Prozessors sein soll. Der Standardwert ist 90 Sekunden. Dies entspricht dem Zeitraum, für den über das Berechnungsverfahren eine gute Auslastung erzielt wird.
Als Schutz vor Überladung bei zu großen Datenmengen können Grenzwerte für die zu bearbeitende Ergebnismenge definiert werden. Die Steuerung erfolgt über die Konfigurationsparameter QBM | DBQueue | ChangeLimitMin und QBM | DBQueue | ChangeLimitMax.
Verarbeitung der DBQueue Prozessor Aufträge durch den Database Agent Service
Für die Verarbeitung der internen Aufträge durch den Database Agent Service, stellen Sie sicher, dass der Database Agent Service installiert und konfiguriert ist. Der Database Agent Service wird über ein Plugin des One Identity Manager Service bereitgestellt. Alternativ kann der Database Agent Service über das Kommandozeilenprogramm DatabaseAgentServiceCmd.exe ausgeführt werden. Das Plugin sollte auf dem Jobserver konfiguriert sein, der die Serverfunktion Aktualisierungsserver übernimmt. Für die Datenbankverbindung im Jobprovider muss ein administrativer Benutzer verwendet werden.
Der Database Agent Service übernimmt folgende Aufgaben:
-
Steuerung der Verarbeitung und Verteilung der Aufträge der DBQueue an die einzelnen Slots (zentraler Dispatcher)
-
Prüfen und Starten von zeitgesteuerten Aufträgen
-
Entfernen von bereits verarbeiteten DBQueue Aufträgen
-
Starten von Wartungsarbeiten
-
Befüllen und Aktualisieren der Jobqueue Übersicht
-
Archivieren oder Löschen von verarbeiteten Prozessen aus der Jobqueue
-
Archivieren oder Löschen von Aufzeichnungen aus der Prozessverarbeitung
HINWEIS: Wenn der Database Agent Service nicht arbeitet, wird in allen Administrationswerkzeugen eine Meldung in der Statuszeile angezeigt. Um diese Meldung zu sehen, benötigen die Benutzer mindestens die Berechtigungsebene für Konfigurationsbenutzer.
Verwandte Themen
Steuerung der Verarbeitung von DBQueue Prozessor Aufträgen
Der zentrale Dispatcher übernimmt die Steuerung der Verarbeitung und verteilt die Aufträge der DBQueue an die einzelnen Slots.
Es wird zunächst die Anzahl der aktuell verfügbaren Slots ermittelt, die verwendet werden können. Je mehr Last auf dem Datenbankserver vorhanden ist, desto weniger Slots können aktuell verwendet werden, mindestens werden jedoch 5 Slots verwendet.
Die Anzahl der aktuell verfügbaren Slots ergibt sich aus :
Anzahl aktuell verfügbarer Slots = Anzahl der maximal verfügbaren Slots - Betrag für alle Prozesse der eigenen Datenbank - Betrag für Prozesse auf anderen Datenbanken des Servers
Der zentrale Dispatcher startet die aktuell verfügbaren Slots einmalig. Für jeden Slot ist ein Prozess eingerichtet, der die Aufträge für genau diesen Slot ausführt.
Sobald Aufträge in die DBQueue eingetragen werden, wird der zentrale Dispatcher benachrichtigt. Der zentrale Dispatcher verteilt die Aufträge in die einzelnen Slots und benachrichtigt die Prozesse der Slots, dass Aufträge zur Verarbeitung anstehen. Jeder Prozess verarbeitet die Aufträge, die für seinen Slot eingestellt werden. Nach Beendigung seines Auftrags sendet jeder Prozess eine Benachrichtigung an den zentralen Dispatcher und wartet auf neue Aufträge.
Der zentrale Dispatcher prüft in definierten Abständen, ob die Slots noch aktiv sind und verteilt neue Aufträge an die Slots. Sind keine Aufträge in der DBQueue vorhanden, geht der zentrale Dispatcher in den Wartezustand und wartet auf die Benachrichtigung über neue Aufträge.
Nach Ablauf der Laufzeit werden die Aufträge aktuell verwendeter Slots noch abgearbeitet. Anschließend werden die Slots gestoppt. Weitere Informationen finden Sie unter Kommunikation des zentralen Dispatchers mit den einzelnen Slots.
Verarbeiten der DBQueue Prozessor Aufträge
Der zentrale Dispatcher ermittelt die Einträge der DBQueue (Tabelle DialogDBQueue) und verschiebt die Aufträge in die Tabelle QBMDBQueueCurrent mit der Zuordnung Auftrag pro Slot.
Beispiel für Einträge in den Tabellen DialogDBQueue und QBMDBQueueCurrent
Tabelle 188: Einträge in Tabelle DialogDBQueue (Auszug)
OrgRoot |
A |
OrgRoot |
B |
ADSAccountInADSGroup |
X |
ADSAccountInADSGroup |
Y |
ADSAccountInADSGroup |
Z |
Tabelle 189: Einträge in Tabelle QBMDBQueueCurrent (Auszug)
001 |
OrgRoot |
A |
001 |
OrgRoot |
B |
002 |
ADSAccountInADSGroup |
X |
002 |
ADSAccountInADSGroup |
Y |
002 |
ADSAccountInADSGroup |
Z |
Jeder Prozess verarbeitet die Aufträge, die für seinen Slot in die Tabelle QBMDBQueueCurrent eingestellt werden. Folgeaufträge, die aus der Verarbeitung resultieren, werden in die Tabelle DialogDBQueue eingestellt.
Wenn ein Prozess seine Aufträge abgearbeitet hat und keine weiteren Aufträge anstehen, wird die Slotnummer in der Tabelle QBMDBQueueCurrent durch den Prozess selbst auf 0 gesetzt. Der Eintrag verbleibt zunächst in der Tabelle QBMDBQueueCurrent, wird jedoch nicht mehr beachtet (da Slot 0 kein aktiver Slot ist).
In regelmäßigen Abständen werden alle Einträge mit Slotnummer 0 aus der Tabelle QBMDBQueueCurrent gelöscht.
Tabelle 190: Bedeutung der Slotnummern in Tabelle QBMDBQueueCurrent
001 - n |
Nummer des Slots, in dem ein Auftrag zu verarbeiten ist. |
0 |
Zustand nach ordnungsgemäßer Erledigung des Auftrags. |
-1 |
Bei der Verarbeitung des Auftrags ist ein Fehler aufgetreten oder Verarbeitung wird zurückgestellt, zum Beispiel wegen laufender Synchronisation. Der zentrale Dispatcher reaktiviert diesen Auftrag.
HINWEIS: Das Zurückstellen von DBQueue Aufträgen wird im Systemprotokoll aufgezeichnet. |
-2 |
Bei der Verarbeitung des Auftrags ist ein Fehler aufgetreten oder Verarbeitung wird zurückgestellt, zum Beispiel wegen Blockierungen. Der zentrale Dispatcher reaktiviert diesen Auftrag. |
-3 |
Bei der Verarbeitung des Auftrags ist ein Fehler aufgetreten oder Verarbeitung wird zurückgestellt, zum Beispiel wegen noch vorhandener Einträge in der Jobqueue. Der zentrale Dispatcher reaktiviert diesen Auftrag. |
Nutzung des DBQueue Puffers
Um Blockaden bei der Verarbeitung der Aufträge in der DBQueue durch langlaufende Aktionen, wie beispielsweise Synchronisationen, zu verhindern, wird ein DBQueue Puffer (Tabelle QBMDBQueuePond) genutzt. Synchronisationen schreiben ihre DBQueue Prozessor Aufträge zunächst in die Tabelle QBMDBQueuePond. Nach Abschluss der Synchronisation werden die Einträge aus der Tabelle QBMDBQueuePond in die Tabelle DialogDBQueue verschoben.
Sollte eine langlaufende Aktion über einen definierten Zeitraum keine weiteren Einträge im DBQueue Puffer erzeugen, weil beispielsweise eine Synchronisation nicht korrekt beendet wurde, werden verbliebene Einträge der Tabelle QBMDBQueuePond in die Tabelle DialogDBQueue verschoben. Der Zeitraum ist im Konfigurationsparameter QBM | DBQueue | BufferTimeout festgelegt (Standard: 120 Minuten). Die Übernahme der Einträge erfolgt innerhalb der täglichen Wartungsaufträge.