Messen der Leistung von Azure Cosmos DB for NoSQL mit einem Benchmarking-Framework

Sie haben heute mehr denn je die Wahl, welchen Datenbanktyp Sie für Ihren Datenworkload verwenden möchten. Einer der wichtigsten Faktoren bei der Auswahl einer Datenbank ist die Leistung der Datenbank oder des Dienstes. Ein Leistungsvergleich kann jedoch umständlich und fehleranfällig sein. Das Benchmarking-Framework für Azure-Datenbanken vereinfacht den Prozess des Leistungsvergleichs mit beliebten Open-Source-Benchmarking-Tools mit reibungsarmen Rezepten, die gängige bewährte Methoden implementieren. In Azure Cosmos DB for NoSQL implementiert das Framework bewährte Methoden für das Java SDK und verwendet das Open-Source-Tool YCSB. In diesem Leitfaden verwenden Sie dieses Benchmarking-Framework, um eine Leseworkload zu implementieren und sich mit dem Framework vertraut zu machen.

Voraussetzungen

Azure Cosmos DB-Konto erstellen

Zunächst erstellen Sie eine Datenbank und einen Container im vorhandenen API for NoSQL-Konto.

  1. Navigieren Sie im Azure-Portal zu Ihrem vorhandenen API für NoSQL-Konto.

  2. Wählen Sie im Ressourcenmenü Data Explorer aus.

    Screenshot der im Ressourcenmenü hervorgehobenen Option „Daten-Explorer“

  3. Wählen Sie auf der Seite Daten-Explorer in der Befehlsleiste die Option Neuer Container aus.

    Screenshot der Option „Neuer Container“ in der Befehlsleiste des Daten-Explorer

  4. Erstellen Sie im Dialogfeld Neuer Container einen neuen Container mit den folgenden Einstellungen:

    Einstellung Wert
    Datenbank-ID ycsb
    Typ des Datenbankdurchsatzes Manuell
    Menge des Datenbankdurchsatzes 400
    Container-ID usertable
    Partitionsschlüssel /id

    Screenshot des Dialogfelds „Neuer Container“ auf der Seite Daten-Explorer.

Bereitstellen eines Benchmarking-Frameworks in Azure

Verwenden Sie jetzt eine Azure Resource Manager-Vorlage, um das Benchmarking-Framework mit dem Standardrezept für Lesevorgänge in Azure bereitzustellen.

  1. Stellen Sie das Benchmarking-Framework mithilfe einer Azure Resource Manager-Vorlage bereit, die unter dem folgenden Link verfügbar ist.

    Schaltfläche Bereitstellung in Azure.

  2. Passen Sie auf der Seite Benutzerdefinierte Bereitstellung die folgenden Parameter an:

    Screenshot der Seite Benutzerdefinierte Bereitstellung mit ausgefüllten Parameterwerten.

  3. Wählen Sie Überprüfen und erstellen und dann Erstellen aus, um die Vorlage bereitzustellen.

  4. Warten Sie, bis die Bereitstellung abgeschlossen ist.

    Tipp

    Der Bereitstellungsvorgang kann 5 bis 10 Minuten dauern.

Ergebnisse des Vergleichstests ansehen

Sie können jetzt das vorhandene Azure Storage-Konto verwenden, um den Status des Vergleichstests zu überprüfen und sich die Gesamtergebnisse anzeigen lassen. Der Status wird mithilfe einer Speichertabelle gespeichert, und die Ergebnisse werden im CSV-Format zu einem Speicherblob aggregiert.

  1. Navigieren Sie im Azure-Portal zu Ihrem bestehenden Azure Storage-Konto.

  2. Navigieren Sie zu einer Speichertabelle mit dem Namen ycsbbenchmarkingmetadata und suchen Sie die Entität mit dem Partitionsschlüssel ycsb_sql.

    Screenshot der Tabelle ycsbbenchmarkingMetadata in einem Speicherkonto.

  3. Sehen Sie sich das Feld JobStatus der Tabelleninstanz genauer an. Zunächst ist der Status des Auftrags Started und die Zeile enthält einen Zeitstempel bei der Eigenschaft JobStartTime, aber nicht bei der Eigenschaft JobFinishTime.

  4. Warten Sie, bis der Auftrag den Status Finished hat und einen Zeitstempel bei der Eigenschaft JobFinishTime erhält.

    Tipp

    Es kann etwa 20 bis 30 Minuten dauern, bis der Auftrag abgeschlossen ist.

  5. Navigieren Sie im gleichen Konto zum Speichercontainer mit dem Präfix ycsbbenchmarking-*. Sehen Sie sich die Ausgabe- und Diagnoseblobs für das Tool genauer an.

    Screenshot: Container und Ausgabeblobs aus dem Benchmarking-Tool.

  6. Öffnen Sie das Blob aggregation.csv und sehen Sie sich den Inhalt an. Sie sollten jetzt einen CSV-Datensatz mit aggregierten Ergebnissen von allen Benchmarkclients sehen.

    Screenshot des Inhalts des Blobs mit den Gesamtergebnissen.

    Operation,Count,Throughput,Min(microsecond),Max(microsecond),Avg(microsecond),P9S(microsecond),P99(microsecond)
    READ,180000,299,706,448255,1079,1159,2867
    

Rezepte

Das Benchmarking-Framework für Azure-Datenbanken enthält Rezepte zum Kapseln der Workloaddefinitionen, die für eine „1-Klick“-Erfahrung an das zugrunde liegende Benchmarking-Tool übergeben werden. Die Workloaddefinitionen wurden basierend auf den bewährten Methoden entworfen, die vom Azure Cosmos DB-Team und dem Team des Benchmarking-Tools veröffentlicht wurden. Die Rezepte wurden getestet und ihre Ergebnisse auf Konsistenz überprüft.

Sie können erwarten, dass für alle Lese- und Schreibrezepte im GitHub-Repository die folgenden Wartezeiten angezeigt werden:

  • Wartezeit beim Lesen

    Diagramm der typischen durchschnittlichen Leselatenz von 1 bis 2 Millisekunden.

  • Wartezeit beim Schreiben

    Diagramm der typischen durchschnittlichen Schreiblatenz von etwa 4 Millisekunden.

Häufige Probleme

Dieser Abschnitt enthält die häufigsten Fehler, die beim Ausführen des Benchmarking-Tools auftreten können. Die Fehlerprotokolle für das Tool sind in der Regel in einem Container innerhalb des Azure Storage-Kontos verfügbar.

Screenshot: Container und Blobs in einem Speicherkonto.

  • Wenn die Protokolle nicht im Speicherkonto gespeichert sind, liegt die Ursache für dieses Problem in der Regel in einer falschen oder fehlenden Speicherverbindungszeichenfolge. Ist dies der Fall, wird dieser Fehler in der Datei agent.out im Ordner /home/benchmarking der Client-VM aufgeführt.

    Error while accessing storage account, exiting from this machine in agent.out on the VM
    
  • Wenn der Azure Cosmos DB-Endpunkt-URI falsch oder nicht erreichbar ist, wird dieser Fehler sowohl auf der Client-VM als auch im Speicherkonto in der Datei agent.out aufgeführt.

    Caused by: java.net.UnknownHostException: rtcosmosdbsss.documents.azure.com: Name or service not known 
    
  • Wenn der Azure Cosmos DB-Schlüssel falsch ist, wird dieser Fehler sowohl auf der Client-VM als auch im Speicherkonto in der Datei agent.out aufgeführt.

    The input authorization token can't serve the request. The wrong key is being used….
    

Nächste Schritte