Evitare errori di limitazione della frequenza per operazioni di Azure Cosmos DB per MongoDB

SI APPLICA A: MongoDB

Le operazioni di Azure Cosmos DB per MongoDB potrebbero riscontrare una limitazione della frequenza, causando 16500 errori nelle metriche delle richieste mongo, se superano il limite di velocità effettiva di una raccolta (UR).

Abilitare La ripetizione dei tentativi lato server (SSR) per automatizzare i tentativi di operazione. SSR ritenta le richieste in tutte le raccolte nell'account con brevi ritardi. Se viene raggiunto un timeout di 60 secondi, un client riceve un'eccezione ExceededTimeLimit (50).

Usare il portale di Azure

  1. Accedere al portale di Azure.

  2. Passare all'account Azure Cosmos DB for MongoDB.

  3. Passare al riquadro Funzionalità sotto la sezione Impostazioni.

  4. Selezionare Server Side Retry (Riprova lato server).

  5. Fare clic su Abilita per abilitare questa funzionalità per tutte le raccolte nell'account.

Screenshot della funzionalità di ripetizione dei tentativi sul lato server per Azure Cosmos DB per MongoDB

Usare l'interfaccia della riga di comando di Azure

  1. Controllare se SSR è già abilitato per l'account:

    az cosmosdb show --name accountname --resource-group resourcegroupname
    
  2. Abilitare SSR per tutte le raccolte nell'account del database. Affinché la modifica diventi effettiva potrebbero essere necessari fino a 15 minuti.

    az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableMongo DisableRateLimitingResponses
    
  3. Il comando seguente disabilita i tentativi sul lato server per tutte le raccolte nell'account del database rimuovendo DisableRateLimitingResponses dall'elenco delle funzionalità. Affinché la modifica diventi effettiva potrebbero essere necessari fino a 15 minuti.

    az cosmosdb update --name accountname --resource-group resourcegroupname --capabilities EnableMongo
    

Domande frequenti

Come è possibile monitorare gli effetti di un retry lato server?

È possibile visualizzare gli errori di limitazione della frequenza (16500) con la metrica delle richieste mongo, che vengono ritentate sul lato server nel riquadro Metriche di Azure Cosmos DB. Tenere presente che questi errori non passano al client quando è abilitato SSR, poiché vengono gestiti e ritentati sul lato server.

È possibile cercare voci di log contenenti estimatedDelayFromRateLimitingInMilliseconds nei log delle risorse di Azure Cosmos DB.

Il retry sul lato server influisce sul livello di coerenza?

Il nuovo tentativo sul lato server non influisce sulla coerenza di una richiesta. Le richieste vengono ritentate sul lato server se sono limitate.

Il retry lato server influisce su qualsivoglia tipo di errore che il client potrebbe ricevere?

No, il nuovo tentativo sul lato server influisce solo sugli errori di limitazione della frequenza ritentandoli sul lato server. Questa funzionalità impedisce di gestire gli errori di limitazione della frequenza nell'applicazione client. Tutti gli altri errori verranno visualizzati nel client.

Passaggi successivi

Per altre informazioni sulla risoluzione degli errori comuni, vedere questo articolo:

Si sta tentando di pianificare la capacità per una migrazione ad Azure Cosmos DB? È possibile usare le informazioni del cluster di database esistente per la pianificazione della capacità.