Test delle prestazioni e della scalabilità con Azure Cosmos DBPerformance and scale testing with Azure Cosmos DB

Il test delle prestazioni e della scalabilità è un passaggio chiave nello sviluppo di un'applicazione.Performance and scale testing is a key step in application development. Per molte applicazioni, il livello di database ha un impatto significativo sulla scalabilità e sulle prestazioni complessive.For many applications, the database tier has a significant impact on overall performance and scalability. È pertanto considerato un componente fondamentale nel test delle prestazioni.Therefore, it's a critical component of performance testing. Azure Cosmos DB è studiato appositamente per offrire scalabilità elastica e prestazioni prevedibili.Azure Cosmos DB is purpose-built for elastic scale and predictable performance. Queste funzionalità lo rendono ideale per le applicazioni che richiedono un livello di database ad alte prestazioni.These capabilities make it a great fit for applications that need a high-performance database tier.

Questo articolo è un riferimento per gli sviluppatori che implementano i gruppi di test delle prestazioni per i carichi di lavoro di Azure Cosmos DB.This article is a reference for developers implementing performance test suites for their Azure Cosmos DB workloads. Può essere usato anche per valutare Azure Cosmos DB in scenari con applicazioni ad alte prestazioni.It also can be used to evaluate Azure Cosmos DB for high-performance application scenarios. Approfondisce soprattutto i test isolati delle prestazioni del database, ma include anche le procedure consigliate per le applicazioni di produzione.It focuses primarily on isolated performance testing of the database, but also includes best practices for production applications.

Alla fine della lettura, si avranno le risposte alle domande seguenti:After reading this article, you'll be able to answer the following questions:

  • Dove è possibile trovare un'applicazione client .NET di esempio per i test delle prestazioni di Azure Cosmos DB?Where can I find a sample .NET client application for performance testing of Azure Cosmos DB?
  • Come si ottengono livelli di velocità effettiva elevati con Azure Cosmos DB dall'applicazione client?How do I achieve high throughput levels with Azure Cosmos DB from my client application?

Per iniziare a usare il codice, scaricare il progetto dell'esempio relativo al test delle prestazioni di Azure Cosmos DB.To get started with code, download the project from Azure Cosmos DB performance testing sample.

Nota

L'obiettivo di questa applicazione è illustrare come ottenere le migliori prestazioni da Azure Cosmos DB con un numero ridotto di computer client.The goal of this application is to demonstrate how to get the best performance from Azure Cosmos DB with a small number of client machines. L'obiettivo dell'esempio non è raggiungere la capacità di elaborazione massima di Azure Cosmos DB (che è possibile ridimensionare senza limiti).The goal of the sample is not to achieve the peak throughput capacity of Azure Cosmos DB (which can scale without any limits).

Se si è interessati alle opzioni di configurazione lato client per migliorare le prestazioni di Azure Cosmos DB, vedere Suggerimenti sulle prestazioni per Azure Cosmos DB.If you're looking for client-side configuration options to improve Azure Cosmos DB performance, see Azure Cosmos DB performance tips.

Eseguire l'applicazione per il test delle prestazioniRun the performance testing application

Il modo più rapido per iniziare è compilare ed eseguire l'esempio .NET, come descritto nella procedura seguente.The quickest way to get started is to compile and run the .NET sample, as described in the following steps. È anche possibile rivedere il codice sorgente e implementare configurazioni analoghe nelle proprie applicazioni client.You can also review the source code and implement similar configurations on your own client applications.

Passaggio 1: scaricare il progetto dell'esempio relativo al test delle prestazioni di Azure Cosmos DB o creare una copia tramite fork del repository GitHub.Step 1: Download the project from Azure Cosmos DB performance testing sample, or fork the GitHub repository.

Passaggio 2: Modificare le impostazioni di EndpointUrl, AuthorizationKey, CollectionThroughput e DocumentTemplate (facoltativo) nel file App.config.Step 2: Modify the settings for EndpointUrl, AuthorizationKey, CollectionThroughput, and DocumentTemplate (optional) in App.config.

Nota

Prima di effettuare il provisioning delle raccolte con velocità effettiva elevata, fare riferimento alla pagina dei prezzi per stimare i costi per raccolta.Before you provision collections with high throughput, refer to the Pricing page to estimate the costs per collection. Azure Cosmos DB addebita l'archiviazione e la velocità effettiva in modo indipendente su base oraria.Azure Cosmos DB bills storage and throughput independently on an hourly basis. È possibile risparmiare sui costi eliminando o riducendo la velocità effettiva delle raccolte Azure Cosmos DB dopo il test.You can save costs by deleting or lowering the throughput of your Azure Cosmos DB collections after testing.

Passaggio 3 : compilare ed eseguire l'app console dalla riga di comando.Step 3: Compile and run the console app from the command line. Verrà visualizzato un output simile al seguente:You should see output like the following:

C:\Users\documentdb\Desktop\Benchmark>DocumentDBBenchmark.exe
Summary:
---------------------------------------------------------------------
Endpoint: https://arramacquerymetrics.documents.azure.com:443/
Collection : db.data at 100000 request units per second
Document Template*: Player.json
Degree of parallelism*: -1
---------------------------------------------------------------------

DocumentDBBenchmark starting...
Found collection data with 100000 RU/s
Starting Inserts with 100 tasks
Inserted 4503 docs @ 4491 writes/s, 47070 RU/s (122B max monthly 1KB reads)
Inserted 17910 docs @ 8862 writes/s, 92878 RU/s (241B max monthly 1KB reads)
Inserted 32339 docs @ 10531 writes/s, 110366 RU/s (286B max monthly 1KB reads)
Inserted 47848 docs @ 11675 writes/s, 122357 RU/s (317B max monthly 1KB reads)
Inserted 58857 docs @ 11545 writes/s, 120992 RU/s (314B max monthly 1KB reads)
Inserted 69547 docs @ 11378 writes/s, 119237 RU/s (309B max monthly 1KB reads)
Inserted 80687 docs @ 11345 writes/s, 118896 RU/s (308B max monthly 1KB reads)
Inserted 91455 docs @ 11272 writes/s, 118131 RU/s (306B max monthly 1KB reads)
Inserted 102129 docs @ 11208 writes/s, 117461 RU/s (304B max monthly 1KB reads)
Inserted 112444 docs @ 11120 writes/s, 116538 RU/s (302B max monthly 1KB reads)
Inserted 122927 docs @ 11063 writes/s, 115936 RU/s (301B max monthly 1KB reads)
Inserted 133157 docs @ 10993 writes/s, 115208 RU/s (299B max monthly 1KB reads)
Inserted 144078 docs @ 10988 writes/s, 115159 RU/s (298B max monthly 1KB reads)
Inserted 155415 docs @ 11013 writes/s, 115415 RU/s (299B max monthly 1KB reads)
Inserted 166126 docs @ 10992 writes/s, 115198 RU/s (299B max monthly 1KB reads)
Inserted 173051 docs @ 10739 writes/s, 112544 RU/s (292B max monthly 1KB reads)
Inserted 180169 docs @ 10527 writes/s, 110324 RU/s (286B max monthly 1KB reads)
Inserted 192469 docs @ 10616 writes/s, 111256 RU/s (288B max monthly 1KB reads)
Inserted 199107 docs @ 10406 writes/s, 109054 RU/s (283B max monthly 1KB reads)
Inserted 200000 docs @ 9930 writes/s, 104065 RU/s (270B max monthly 1KB reads)

Summary:
---------------------------------------------------------------------
Inserted 200000 docs @ 9928 writes/s, 104063 RU/s (270B max monthly 1KB reads)
---------------------------------------------------------------------
DocumentDBBenchmark completed successfully.
Press any key to exit...

Passaggio 4 (se necessario) : la velocità effettiva segnalata (UR/sec) dallo strumento deve essere analoga o superiore a quella della raccolta.Step 4 (if necessary): The throughput reported (RU/s) from the tool should be the same or higher than the provisioned throughput of the collection. In caso contrario, l'aumento di DegreeOfParallelism a piccoli incrementi può aiutare a raggiungere il limite.If it's not, increasing the DegreeOfParallelism in small increments might help you reach the limit. Se la velocità effettiva dall'app client si stabilizza, avviare più istanze dell'app in altri computer client.If the throughput from your client app plateaus, start multiple instances of the app on additional client machines. Per ottenere assistenza per questo passaggio, inviare un messaggio di posta elettronica all'indirizzo askcosmosdb@microsoft.com o creare un ticket di supporto dal portale di Azure.If you need help with this step, email askcosmosdb@microsoft.com or file a support ticket from the Azure portal.

Quando l'app è in esecuzione, è possibile provare criteri di indicizzazione e livelli di coerenza diversi per comprenderne l'impatto sulla velocità effettiva e sulla latenza.After you have the app running, you can try different indexing policies and consistency levels to understand their impact on throughput and latency. È anche possibile esaminare il codice sorgente e implementare configurazioni analoghe alle suite di test o alle applicazioni di produzione.You can also review the source code and implement similar configurations to your own test suites or production applications.

Passaggi successiviNext steps

Questo articolo ha illustrato come eseguire i test delle prestazioni e della scalabilità con Azure Cosmos DB usando un'app console .NET.In this article, we looked at how you can perform performance and scale testing with Azure Cosmos DB by using a .NET console app. Per altre informazioni, vedere gli articoli seguenti:For more information, see the following articles: