Datenbank-Poolgröße und Laufzeitinstanzen

In den meisten Spectrum™ Technology Platform-Umgebungen werden mehrere Flüsse zur selben Zeit ausgeführt, unabhängig davon, ob es sich dabei um Batchaufträge handelt oder um Dienste, die auf Werbservice- oder API-Anforderungen antworten. Um die gleichzeitige Verarbeitung zu optimieren, können Sie die Einstellung „Datenbank-Poolgröße“ verwenden, die die Anzahl der gleichzeitigen Anforderungen, die eine Spectrum-Datenbank verarbeitet, begrenzt und die Einstellung „Laufzeitinstanzen“, die die Anzahl der Instanzen eines Flussschritts steuert, die gleichzeitig ausgeführt werden. Diese beiden Einstellungen sollten gemeinsam optimiert werden, um eine optimale Leistung zu erreichen.

Datenbank-Poolgröße

Spectrum-Datenbanken enthalten Verweisdaten, die in bestimmten Schritten verwendet werden, wie postalische Daten zum Validieren von Adressen oder Geocoding-Daten zum geographischen Referenzieren von Adressen. Diese Datenbanken können konfiguriert werden, mehrere gleichzeitige Anforderungen aus Datenflussschritten oder Diensten, die diese verwenden, zu akzeptieren und dadurch die Leistung dieser Datenfluss- oder Dienstanforderungen zu verbessern. Die Datenbank-Poolgröße legt die maximale Anzahl an gleichzeitigen Anforderungen fest, die eine Spectrum-Datenbank verarbeitet. Standardmäßig haben Spectrum-Datenbanken eine Poolgröße von 4, was bedeutet, dass die Datenbank gleichzeitig vier Anfragen verarbeiten kann.

Die optimale Poolgröße ist je nach Modul unterschiedlich. Im Allgemeinen erzielen Sie die besten Ergebnisse, wenn Sie die Poolgröße auf einen Wert zwischen der Hälfte und der doppelten Anzahl der Server-CPUs festlegen. Für die meisten Module entspricht die optimale Poolgröße der Anzahl der CPUs. Wenn Ihr Server beispielsweise über vier CPUs verfügt, können Sie mit einer Poolgröße zwischen 2 (die Hälfte der vorhandenen CPUs) und 8 (das Doppelten der vorhandenen CPUs) experimentieren, wobei die optimale Größe möglicherweise bei 4 liegt (Anzahl der vorhandenen CPUs).

Beim Ändern der Poolgröße müssen Sie außerdem die Anzahl von Laufzeitinstanzen berücksichtigen, die im Datenfluss der Schritte, die auf die Datenbank zugreifen, angegeben ist. Betrachten Sie beispielsweise einen Datenfluss mit einem „Geocode US Address“-Schritt der zur Verwendung einer Laufzeitinstanz konfiguriert ist. Wenn Sie die Poolgröße für die Geocoding-Datenbank USA auf 4 festlegen, verbessert sich die Leistung nicht, da nur eine Laufzeitinstanz vorhanden ist und nur eine Anforderung gleichzeitig an die Datenbank gestellt wird. Wenn Sie jedoch die Anzahl der Laufzeitinstanzen von „Geocode US Address“ auf 4 erhöhen würden, könnte sich die Leistung verbessern, da dann vier Instanzen von „Geocode US Address“ gleichzeitig auf die Datenbank zugreifen und damit die volle Poolgröße nutzen würden.

Laufzeitinstanzen

Jeder Schritt in einem Datenfluss läuft asynchron in seinem eigenen Thread und ist unabhängig von jedem anderen Schritt. Dies ermöglicht eine parallele Verarbeitung von Schritten in einem Datenfluss, wodurch Sie mehr als eine Laufzeitinstanz für einen Schritt nutzen können. Das ist in Datenflüssen hilfreich, bei denen einige Schritte die Daten schneller als andere verarbeiten. Dies kann zu einer unausgewogenen Arbeitsverteilung unter den Threads führen. Stellen Sie sich z. B. einen Datenfluss aus den folgenden Schritten vor:



Je nach Konfiguration der Schritte könnte es sein, dass der „Validate Address“-Schritt Datensätze schneller als der „Geocode US Address“-Schritt verarbeitet. In diesem Fall werden an einem Punkt während der Datenflussausführung alle Datensätze durch „Validate Address“ verarbeitet worden sein, aber „Geocode US Address“ ist noch mitten in der Verarbeitung. Zur Verbesserung der Leistung dieses Datenflusses ist es notwendig, die Leistung des langsamsten Schrittes zu verbessern; in diesem Fall „Geocode US Address“. Eine Möglichkeit wäre die Angabe von mehreren Laufzeitinstanzen des Schrittes. Die Einstellung der Anzahl von Laufzeitinstanzen auf zwei bedeutet, dass es zwei Instanzen dieses Schrittes gibt, von denen jede in ihrem eigenen Thread läuft und Datensätze verarbeitet.

Als allgemeine Regel gilt, dass die Anzahl der Laufzeitinstanzen mindestens der Anzahl der Instanzen der Remote-Komponente entsprechen sollte. Weitere Informationen zu Remote-Komponenten finden Sie im Administratorhandbuch. Obwohl das Festlegen von mehreren Laufzeitinstanzen die Leistung verbessern kann, kann eine zu hohe Einstellung die Systemressourcen überlasten, wodurch sich die Leistung wieder verringert.

Anmerkung: Die Verwendung mit mehreren Laufzeitinstanzen verbessert nur die Leistung beim Ausführen von Aufträgen oder beim Ausführen von Dienstanforderungen mit mehr als einem Datensatz.

Optimierungsverfahren

Experimentieren Sie mit verschiedenen Einstellungen für „Datenbank-Poolgröße“ und „Laufzeitinstanzen“, um diejenigen zu finden, die die verfügbaren Serverressourcen maximieren, ohne die Ressourcen zu überladen und eine Leistungsverschlechterung zu verursachen.

Anmerkung: Sie sollten die Datenfluss-Poolgröße optimieren, bevor Sie die Datenbank-Poolgröße anpassen. Informationen zum Optimieren der Datenfluss-Poolgröße finden Sie unter Datenfluss-Poolgröße.
  1. Beginnen Sie damit, Testdaten zu suchen, die Sie zum Testen der verschiedenen Einstellungen verwenden können. Das Test-Dataset sollte mindestens so groß sein, dass die Ausführungszeit gemessen werden kann und eine Überprüfung auf Konsistenz durchgeführt werden kann. Die Testdaten sollten außerdem für die tatsächlichen Daten, die Sie verarbeiten möchten, repräsentativ sein. Wenn Sie einen Leistungstest für das Geocoding durchführen, müssen Sie sicherstellen, dass Ihre Testdaten für alle zu geocodierenden Länder eine übereinstimmende Anzahl von Datensätzen enthalten.
  2. Wenn Sie einen Dienst oder Datenfluss testen, für den die Verwendung einer Datenbankressource erforderlich ist, z. B. Postdatenbanken oder Geocoding-Datenbanken, müssen Sie sicherstellen, dass Sie die aktuelle Version der Datenbank installiert haben.
  3. Erstellen Sie aus den vorbereiteten Testdaten und den aktuell installierten Datenbankressourcen einen einfachen Datenfluss, der Daten aus einer Datei liest, sie in dem zu optimierenden Schritt verarbeitet und in eine Datei schreibt. Beispiel: Erstellen Sie zum Testen von Leistungseinstellungen für Validate Address einen aus „Read from File“, „Validate Address“ und „Write to File“ bestehenden Datenfluss.
  4. Legen Sie die Poolgröße der Datenbankressource auf 1 fest:
    1. Öffnen Sie die Management Console.
    2. Öffnen Sie Ressourcen > Spectrum-Datenbanken.
    3. Wählen Sie die Datenbankressource aus, die Sie optimieren möchten, und klicken Sie auf die Schaltfläche „Ändern“ .
    4. Geben Sie in das Feld Poolgröße 1 ein.
    5. Klicken Sie auf OK.
  5. Legen Sie die Schritt-Laufzeitinstanzen auf 1 fest:
    1. Öffnen Sie den Datenfluss im Enterprise Designer.
    2. Doppelklicken Sie auf den Schritt, für den Sie mehrere Laufzeitinstanzen einstellen möchten.
    3. Klicken Sie auf Laufzeit.
      Anmerkung: Nicht alle Schritte können mehrere Laufzeitinstanzen verwenden. Wenn die Schaltfläche Laufzeit nicht im unteren Bereich des Schrittfensters vorhanden ist, kann der Schritt nicht mehrere Laufzeitinstanzen verwenden.
    4. Wählen Sie Lokal aus und geben Sie 1 an.
    5. Klicken Sie auf OK, um das Fenster Laufzeitleistung zu schließen. Klicken Sie anschließend auf OK, um den Schritt zu schließen.
  6. Berechnen Sie eine Basisleistung, indem Sie den Datenfluss mehrmals ausführen und die Durchschnittswerte aufzeichnen für:
    • Verstrichene Zeit
    • CPU-Auslastung
    • Speicherauslastung
    Tipp: Sie können mit der JMX Console die Leistung überwachen. Weitere Informationen finden Sie unter Überwachen der Leistung mit der JMX Console.
  7. Führen Sie bei einem zu unterstützenden Anwendungsfall mehrere Instanzen des Auftrags gleichzeitig aus. Zeichnen Sie die verstrichene Zeit, die CPU-Auslastung und die Speicherauslastung für die einzelnen Szenarien auf.
    Tipp: Zur gleichzeitigen Ausführung mehrerer Instanzen eines Auftrags können Sie eine Dateiüberwachung verwenden. Weitere Informationen finden Sie unter Auslösen eines Flusses mit einer Steuerungsdatei.
  8. Erhöhen Sie die Einstellung für die Poolgröße der Datenbankressource und die Schritt-Laufzeitinstanzen.
  9. Starten Sie den Server neu.
  10. Führen Sie den Datenfluss erneut aus und zeichnen Sie dabei die verstrichene Zeit, die CPU-Auslastung und die Speicherauslastung auf.
  11. Fahren Sie so lange mit der Erhöhung der Poolgröße der Datenbankressource und der Schritt-Laufzeitinstanzen fort, bis Sie eine Verringerung der Leistung feststellen können.
  12. Wiederholen Sie beim Testen der Geocodingleistung diese Prozedur mit der Eingabe eines einzelnen Landes und mehrerer Länder.