使用 'CosmosExecutionStrategy' 执行数据库操作时超过最大重试次数 (6)

Maximum number of retries (6) exceeded while executing database operations with 'CosmosExecutionStrategy'

我正在使用 ASP.NET Core 2.2、GraphQL.NET、CosmosDB、Entity Framework Core (Microsoft.EntityFrameworkCore.Cosmos v2.2.4) 进行 API 开发项目。

在测试从 AzureComosDB 中提取数据的 API 方法时,有时出现此错误:

Microsoft.EntityFrameworkCore.Storage.RetryLimitExceededException: 'Maximum number of retries (6) exceeded while executing database operations with 'CosmosExecutionStrategy'. See inner exception for the most recent failure.'

我不确定为什么会间歇性地弹出此错误。

任何人都可以通过提供一些指导来解决这个问题来帮助我吗?

首先,你是否检查过错误中所说的内部异常?

Microsoft.EntityFrameworkCore.Storage.RetryLimitExceededException: 'Maximum number of retries (6) exceeded while executing database operations with 'CosmosExecutionStrategy'. See inner exception for the most recent failure.'

它可能会提供失败原因的线索。

现在这个错误是cosmos重试策略引起的。如果操作失败,它将重试到 up to six times.

您可以修改此策略,但可以找到默认值 here。 它被重试的事实表明它是一个错误,重试时可能会消失。一个很好的例子是网络连接中的故障(例如,当 wifi 信号不好时)。另一个可能是请求超出规定的 Request Unit limits.

我想知道有关上下文文件的更多信息,因为错误显示为`

'Maximum number of retries (6) exceeded'

`。如果您尝试在每个请求上重新部署数据库,这可能会导致,因此考虑到您已经在 cosmosdb 中部署了数据库,建议删除 Database.EnsureCreated(),因为这会造成性能问题。

有关详细信息,请参阅此文档https://docs.microsoft.com/en-us/ef/core/providers/cosmos/?tabs=dotnet-core-cli