Dela via


Felsöka problem med avancerade diagnostikfrågor med Azure Cosmos DB för MongoDB

GÄLLER FÖR: NoSQL MongoDB Kassandra Gremlin

I den här artikeln går vi igenom hur du skriver mer avancerade frågor för att felsöka problem med ditt Azure Cosmos DB-konto med hjälp av diagnostikloggar som skickas till Azure Diagnostics-tabeller (äldre) och resursspecifika tabeller (förhandsversion ).

För Azure Diagnostics-tabeller skrivs alla data till en enda tabell. Användare anger vilken kategori de vill fråga efter. Om du vill visa frågan i fulltext i din begäran kan du läsa Övervaka Azure Cosmos DB-data med hjälp av diagnostikinställningar i Azure för att lära dig hur du aktiverar den här funktionen.

För resursspecifika tabeller skrivs data till enskilda tabeller för varje kategori av resursen. Vi rekommenderar det här läget eftersom det:

  • Gör det mycket enklare att arbeta med data.
  • Ger bättre identifiering av scheman.
  • Förbättrar prestanda för både svarstid för inmatning och frågetider.

Vanliga frågor

Vanliga frågor visas i de resursspecifika tabellerna och Azure Diagnostics-tabellerna.

Översta N(10) begärandeenheten (RU) förbrukar begäranden eller frågor inom en viss tidsram

//Enable full-text query to view entire query text
CDBMongoRequests
| where TimeGenerated > ago(24h)
| project PIICommandText, ActivityId, DatabaseName , CollectionName, RequestCharge
| order by RequestCharge desc
| take 10

Begäranden begränsades (statusCode = 429 eller 16500) i ett visst tidsfönster

CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "429" or ErrorCode == "16500"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated

Tidsgränsbegäranden (statusCode = 50) i ett visst tidsfönster

CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "50"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated

Frågor med stora svarslängder (nyttolaststorlek för serversvaret)

CDBMongoRequests
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
| summarize max(ResponseLength) by PIICommandText, RequestCharge, DurationMs, OperationName, TimeGenerated
| order by max_ResponseLength desc

RU-förbrukning efter fysisk partition (över alla repliker i replikuppsättningen)

CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by toint(PartitionKeyRangeId)
| render columnchart

RU-förbrukning efter logisk partition (över alla repliker i replikuppsättningen)

CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart  

Nästa steg