Azure cosmosdb CosmosDB 429出现在azure门户中,但针对同一集合/数据库的c#代码未引发429异常

Azure cosmosdb CosmosDB 429出现在azure门户中,但针对同一集合/数据库的c#代码未引发429异常,azure-cosmosdb,azure-cosmosdb-sqlapi,cosmos,Azure Cosmosdb,Azure Cosmosdb Sqlapi,Cosmos,在特定的给定时间点,如果我们针对cosmos db帐户引用azure portal metrics选项,它会显示429多次出现,但使用cosmos sql sdk编写了c#代码(针对同一cosmos db帐户/数据库/集合),由于RUs为每次发生429/油门问题编写的放大逻辑根本不会触发,因此即使是一次也不会抛出429。令人困惑的是,节流是像azure门户网站所展示的那样发生的,还是它投射了错误的数据。哪一个被认为是真的,门户数据还是C代码行为?如果门户是正确的,为什么c#代码不会引发同样的问题

在特定的给定时间点,如果我们针对cosmos db帐户引用azure portal metrics选项,它会显示429多次出现,但使用cosmos sql sdk编写了c#代码(针对同一cosmos db帐户/数据库/集合),由于RUs为每次发生429/油门问题编写的放大逻辑根本不会触发,因此即使是一次也不会抛出429。令人困惑的是,节流是像azure门户网站所展示的那样发生的,还是它投射了错误的数据。哪一个被认为是真的,门户数据还是C代码行为?如果门户是正确的,为什么c#代码不会引发同样的问题?有什么建议吗

异常捕获逻辑:

 catch (DocumentClientException ex)
                {
                    if (ex.StatusCode == (HttpStatusCode)429)
                    {
                        //RU scale up logic
                    }
                }

SDK将在收到429后自动重试,最多重试次数为中定义的次数

如果您不希望SDK重试,可以将此值设置为0,任何429都将被抛出到您的用户代码中:

ConnectionPolicy connectionPolicy = new ConnectionPolicy();
connectionPolicy.RetryOptions.MaxRetryAttemptsOnThrottledRequests = 0;
DocumentClient client = new DocumentClient(new Uri("service endpoint"), "auth key", connectionPolicy);

如果我们的应用程序不总是那么繁忙,那么推荐的方法是什么,1.是否在429第一次出现时就扩大RU?(或)2.在等待cosmos sdk默认重试9次后,RU是否放大?方法1和2的优缺点是什么?请给出建议。Cosmos让您以编程方式快速放大和缩小。但这取决于你的生意。如果429是非常随机的,并且您没有提供需要维护的业务SLA,那么让SDK重试就可以了。但是,如果您不断获得429,那么这意味着您在正常基础上的供应不足,您需要提高RU或调查您是否可以优化您的操作以减少RU使用。虽然我不会对单个429进行放大,但如果你实现一个算法,检测429的峰值,然后再放大,这也可以工作。