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 so konfiguriert werden, dass sie mehrere gleichzeitige Anforderungen von Schritten oder Diensten, die sie verwenden, akzeptieren. Dadurch kann die Leistung dieser Datenfluss- oder Dienstanforderungen verbessert werden. 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. Nehmen wir einen Datenfluss mit einem „Global Geocode“-Schritt, der zur Verwendung einer Laufzeitinstanz konfiguriert ist, als Beispiel. Wenn Sie die Poolgröße für die Geocoding-Datenbank 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 „Global Geocode“ auf 4 erhöhen würden, könnte sich die Leistung verbessern, da dann vier Instanzen 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 Fluss aus den folgenden Schritten vor:
Je nach Konfiguration der Schritte könnte es sein, dass der „Validate Address“-Schritt Datensätze schneller als der „Global Geocode“-Schritt verarbeitet. In diesem Fall werden zu einem bestimmten Punkt während der Datenflussausführung alle Datensätze durch Validate Address verarbeitet worden sein, aber Global Geocode 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 Global Geocode. 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. Obwohl das Festlegen mehrerer Laufzeitinstanzen die Leistung verbessern kann, kann eine zu hohe Einstellung die Systemressourcen überlasten, wodurch sich die Leistung wieder verringert.
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.
- 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.
- 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.
- Erstellen Sie einen einfachen Datenfluss, der Daten aus einer Datei liest, sie in dem zu optimierenden Schritt verarbeitet und in eine Datei schreibt, aus den vorbereiteten Testdaten und den aktuell installierten Datenbankressourcen. Beispiel: Erstellen Sie einen aus „Read from File“, „Validate Address“ und „Write to File“ bestehenden Datenfluss, um die Leistungseinstellungen für Validate Address zu testen.
- Legen Sie die Poolgröße der Datenbankressource auf 1 fest:
- Öffnen Sie die Spectrum Management Console.
- Öffnen Sie .
- Wählen Sie die Datenbankressource aus, die Sie optimieren möchten, und klicken Sie auf die Schaltfläche „Ändern“ .
- Geben Sie in das Feld Poolgröße 1 ein.
- Klicken Sie auf OK.
- Legen Sie die Schritt-Laufzeitinstanzen auf 1 fest:
- Öffnen Sie den Fluss im Spectrum Enterprise Designer.
- Doppelklicken Sie auf den Schritt, für den Sie mehrere Laufzeitinstanzen einstellen möchten.
- 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.
- Wählen Sie Lokal aus und geben Sie 1 an.
- Klicken Sie auf OK, um das Fenster Laufzeitleistung zu schließen. Klicken Sie anschließend auf OK, um den Schritt zu schließen.
- 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 die Leistung mit der Spectrum JMX Console überwachen. Weitere Informationen finden Sie unter Überwachen der Leistung mit der Spectrum JMX Console. - 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.
- Erhöhen Sie die Einstellung für die Poolgröße der Datenbankressource und die Schritt-Laufzeitinstanzen.
- Starten Sie den Server neu.
- Führen Sie den Datenfluss erneut aus, und zeichnen Sie dabei die verstrichene Zeit, die CPU-Auslastung und die Speicherauslastung auf.
- 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.
- Wiederholen Sie beim Testen der Geocoding-Leistung dieses Verfahren, und geben Sie dazu ein einzelnes Land oder mehrere Länder ein.