Prestaties van Azure Cosmos DB for NoSQL meten met een benchmarking-framework

Er zijn nu meer opties dan ooit, met betrekking tot het type database dat moet worden gebruikt met uw gegevensworkload. Een van de belangrijkste factoren voor het kiezen van een database zijn de prestaties van de database of service, maar benchmarkprestaties kunnen omslachtig en foutgevoelig zijn. Het benchmarkframework voor Azure Databases vereenvoudigt het proces van het meten van prestaties met populaire opensource-benchmarkinghulpprogramma's met recepten met lage wrijving die algemene best practices implementeren. In Azure Cosmos DB for NoSQL implementeert het framework best practices voor de Java SDK en maakt het gebruik van het opensource-hulpprogramma YCSB . In deze handleiding gebruikt u dit benchmarkframework om een leesworkload te implementeren om vertrouwd te raken met het framework.

Vereisten

Azure Cosmos DB-accountresources maken

Eerst maakt u een database en container in de bestaande API voor NoSQL-account.

  1. Navigeer naar uw bestaande API voor NoSQL-account in de Azure Portal.

  2. Selecteer Data Explorer in het resourcemenu.

    Schermopname van de optie Data Explorer gemarkeerd in het resourcemenu.

  3. Selecteer op de pagina Data Explorer de optie Nieuwe container in de opdrachtbalk.

    Schermopname van de optie Nieuwe container op de Data Explorer opdrachtbalk.

  4. Maak in het dialoogvenster Nieuwe container een nieuwe container met de volgende instellingen:

    Instelling Waarde
    Database-id ycsb
    Type databasedoorvoer Handmatig
    Hoeveelheid databasedoorvoer 400
    Container-id usertable
    Partitiesleutel /id

    Schermopname van het dialoogvenster Nieuwe container op de pagina Data Explorer.

Benchmarking-framework implementeren in Azure

Nu gebruikt u een Azure Resource Manager-sjabloon om het benchmarkframework te implementeren in Azure met het standaard leesrecept.

  1. Implementeer het benchmarkframework met behulp van een Azure Resource Manager-sjabloon die beschikbaar is via deze koppeling.

    Knop Implementeren naar Azure.

  2. Op de pagina Aangepaste implementatie ziet u de volgende parameters

    Schermopname van de pagina Aangepaste implementatie met ingevulde parameterwaarden.

  3. Selecteer Beoordelen en maken en vervolgens Maken om de sjabloon te implementeren.

  4. Wacht totdat de installatie is voltooid.

    Tip

    De implementatie kan 5-10 minuten duren.

Resultaten van de benchmark weergeven

U kunt nu het bestaande Azure Storage-account gebruiken om de status van de benchmarktaak te controleren en de geaggregeerde resultaten te bekijken. De status wordt opgeslagen met behulp van een opslagtabel en de resultaten worden geaggregeerd in een opslagblob met behulp van de CSV-indeling.

  1. Navigeer naar uw bestaande Azure Storage-account in de Azure Portal.

  2. Navigeer naar een opslagtabel met de naam ycsbbenchmarkingmetadata en zoek de entiteit met een partitiesleutel van ycsb_sql.

    Schermopname van de tabel ycsbbenchmarkingMetadata in een opslagaccount.

  3. Bekijk het JobStatus veld van de tabelentiteit. In eerste instantie is Started de status van de taak en bevat deze een tijdstempel in de JobStartTime eigenschap, maar niet de JobFinishTime eigenschap.

  4. Wacht totdat de taak de status heeft en Finished een tijdstempel bevat in de JobFinishTime eigenschap.

    Tip

    Het kan ongeveer 20-30 minuten duren voordat de taak is voltooid.

  5. Navigeer naar de opslagcontainer in hetzelfde account met het voorvoegsel ycsbbenchmarking-*. Bekijk de uitvoer- en diagnostische blobs voor het hulpprogramma.

    Schermopname van de container en de uitvoer-blobs van het hulpprogramma voor benchmarking.

  6. Open de aggregation.csv-blob en bekijk de inhoud. U hebt nu een CSV-gegevensset met geaggregeerde resultaten van alle benchmarkclients.

    Schermopname van de inhoud van de blob met aggregatieresultaten.

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

Recepten

Het benchmarkframework voor Azure Databases bevat recepten voor het inkapselen van de workloaddefinities die worden doorgegeven aan het onderliggende benchmarking-hulpprogramma voor een '1-klik'-ervaring. De workloaddefinities zijn ontworpen op basis van de best practices die zijn gepubliceerd door het Azure Cosmos DB-team en het team van het benchmarkprogramma. De recepten zijn getest en gevalideerd voor consistente resultaten.

U kunt de volgende latenties verwachten voor alle lees- en schrijfrecepten in de GitHub-opslagplaats.

  • Leeslatentie

    Diagram van de typische leeslatentie van gemiddeld ongeveer 1 milliseconde tot 2 milliseconden.

  • Schrijflatentie

    Diagram van de typische schrijflatentie van gemiddeld ongeveer 4 milliseconden.

Algemene problemen

Deze sectie bevat de veelvoorkomende fouten die kunnen optreden bij het uitvoeren van het hulpprogramma voor benchmarking. De foutenlogboeken voor het hulpprogramma zijn doorgaans beschikbaar in een container in het Azure Storage-account.

Schermopname van container en blobs in een opslagaccount.

  • Als de logboeken niet beschikbaar zijn in het opslagaccount, wordt dit probleem meestal veroorzaakt door een onjuiste of ontbrekende opslag connection string. In dit geval wordt deze fout vermeld in het agent.out-bestand in de map /home/benchmarking van de virtuele clientmachine.

    Error while accessing storage account, exiting from this machine in agent.out on the VM
    
  • Deze fout wordt vermeld in het agent.out-bestand , zowel in de client-VM als in het opslagaccount als de Azure Cosmos DB-eindpunt-URI onjuist of onbereikbaar is.

    Caused by: java.net.UnknownHostException: rtcosmosdbsss.documents.azure.com: Name or service not known 
    
  • Deze fout wordt vermeld in het agent.out-bestand , zowel in de client-VM als in het opslagaccount als de Azure Cosmos DB-sleutel onjuist is.

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

Volgende stappen