Freigeben über


Messen der Leistung von Azure Cosmos DB für NoSQL mit einem Benchmarking-Framework

Es gibt jetzt als je zuvor mehr Auswahlmöglichkeiten für den Datenbanktyp, der mit Ihrer Datenauslastung verwendet werden soll. Einer der wichtigsten Faktoren für die Auswahl einer Datenbank ist die Leistung der Datenbank oder des Diensts, aber das Benchmarking kann 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 für NoSQL implementiert das Framework bewährte Methoden für das Java SDK und verwendet das Open-Source-YCSB-Tool. In diesem Leitfaden verwenden Sie dieses Benchmarking-Framework, um einen Leseworkload zu implementieren, um sich mit dem Framework vertraut zu machen.

Voraussetzungen

Erstellen von Azure Cosmos DB-Kontoressourcen

Zunächst erstellen Sie eine Datenbank und einen Container in der vorhandenen API für NoSQL-Konto.

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

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

    Screenshot der Im Ressourcenmenü hervorgehobenen Option

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

    Screenshot der Option

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

    Setting Wert
    Datenbank-ID ycsb
    Datenbankdurchsatztyp Manuell
    Datenbankdurchsatzbetrag 400
    Container-ID usertable
    Partitionsschlüssel /id

    Screenshot des Dialogfelds

Bereitstellen des Benchmarking-Frameworks für Azure

Jetzt verwenden Sie eine Azure Resource Manager-Vorlage , um das Benchmarking-Framework mit dem Standardrezept zum Lesen in Azure bereitzustellen.

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

    Schaltfläche „In Azure bereitstellen“.

  2. Auf der Seite "Benutzerdefinierte Bereitstellung" sind die folgenden Parameter:

    Screenshot der Seite

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

  4. Warten Sie, bis die Bereitstellung abgeschlossen ist.

    Tipp

    Die Bereitstellung kann bis zu 5 bis 10 Minuten dauern.

Anzeigen der Ergebnisse des Benchmarks

Jetzt können Sie das vorhandene Azure Storage-Konto verwenden, um den Status des Benchmarkauftrags zu überprüfen und die aggregierten Ergebnisse anzuzeigen. Der Status wird mithilfe einer Speichertabelle gespeichert, und die Ergebnisse werden mithilfe des CSV-Formats in einem Speicher-Blob aggregiert.

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

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

    Screenshot der Tabelle

  3. Beobachten Sie das JobStatus Feld der Tabellenentität. Zunächst ist der Status des Auftrags Started und er enthält einen Zeitstempel in der JobStartTime-Eigenschaft, aber nicht in der JobFinishTime-Eigenschaft.

  4. Warten Sie, bis der Auftrag einen Status von Finished hat und einen Zeitstempel in der JobFinishTime-Eigenschaft enthält.

    Tipp

    Es kann ungefähr 20-30 Minuten dauern, bis der Auftrag abgeschlossen ist.

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

    Screenshot des Containers und der Ausgabe-Blobs aus dem Benchmarking-Tool.

  6. Öffnen Sie das aggregation.csv Blob, und beobachten Sie den Inhalt. Sie sollten jetzt über ein CSV-Dataset mit aggregierten Ergebnissen von allen Benchmarkclients verfügen.

    Screenshot des Inhalts des Blob der Aggregationsresultate.

    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 umfasst Rezepte zum Kapseln der Workloaddefinitionen, die an das zugrunde liegende Benchmarking-Tool für eine "1-Click"-Erfahrung übergeben werden. Die Workloaddefinitionen wurden basierend auf den bewährten Methoden entworfen, die vom Azure Cosmos DB-Team und dem Benchmarking-Tool-Team veröffentlicht wurden. Die Rezepte wurden auf konsistente Ergebnisse getestet und validiert.

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

  • Leselatenz

    Diagramm der typischen Leselatenz, die etwa 1 Millisekunden bis zu 2 Millisekunden beträgt.

  • Schreiblatenz

    Diagramm der typischen Schreiblatenz, die etwa 4 Millisekunden beträgt.

Häufig auftretende Probleme

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

Screenshot von Containern und Blobs in einem Speicherkonto.

  • Wenn die Protokolle im Speicherkonto nicht verfügbar sind, wird dieses Problem in der Regel durch eine falsche oder fehlende Speicherverbindungszeichenfolge verursacht. In diesem Fall wird dieser Fehler in der Datei "agent.out " im Ordner "/home/benchmarking " des virtuellen Clientcomputers aufgeführt.

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

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

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

Nächste Schritte