我们在 Azure 应用服务(某些 Web API)中使用 Application Insights,该服务查询 .NET Core 2.1 中的 Azure Cosmos DB。查询是使用 Nuget 包 Microsoft.Azure.DocumentDB.Core 1.10.0 中的 DocumentClient
对象完成的,在此客户端上我们调用 CreateDocumentQuery<T>(Uri, FeedOptions)扩展方法。
现在从用户的角度来看,查询似乎工作正常。然而,通过查看 Application Insights,我们发现了大量与 Cosmos DB 相关的依赖项故障。我将尝试可视化我在 Azure 门户中看到的内容:
--------------------------------------------------------------------------------------------------
| Event | Res. | Duration |
--------------------------------------------------------------------------------------------------
| ▼ web-api-resource-name POST api-endpoint-name | 200 | 149.1 ms |
--------------------------------------------------------------------------------------------------
| AZURE DOCUMENTDB cosmosdb-name.documents.azure.com | Create/query document | 400 | 4 ms |
--------------------------------------------------------------------------------------------------
| AZURE DOCUMENTDB cosmosdb-name.documents.azure.com | Query documents | 200 | 7 ms |
--------------------------------------------------------------------------------------------------
| AZURE DOCUMENTDB cosmosdb-name.documents.azure.com | Create/query document | 400 | 4 ms |
--------------------------------------------------------------------------------------------------
| AZURE DOCUMENTDB cosmosdb-name.documents.azure.com | Query documents | 200 | 5 ms |
--------------------------------------------------------------------------------------------------
| AZURE DOCUMENTDB cosmosdb-name.documents.azure.com | Create/query document | 400 | 4 ms |
--------------------------------------------------------------------------------------------------
| AZURE DOCUMENTDB cosmosdb-name.documents.azure.com | Query documents | 200 | 6 ms |
--------------------------------------------------------------------------------------------------
| AZURE DOCUMENTDB cosmosdb-name.documents.azure.com | Query documents | 200 | 6 ms |
--------------------------------------------------------------------------------------------------
| AZURE DOCUMENTDB cosmosdb-name.documents.azure.com | Query documents | 200 | 12 ms |
--------------------------------------------------------------------------------------------------
包含 HTTP 400 结果的行在 Azure 门户中以红色突出显示,并且显然是显示依赖项失败的行。现在,由于整个请求似乎导致 HTTP 200,并且没有错误返回到 Web api,所以我只能认为这是一些内部 Cosmos DB 查询。由于单个请求有多个条目,我猜测这可能与某些重试策略有关。
但是,由于我似乎找不到有关错误请求的任何进一步信息:任何人都可以阐明这个问题吗?
更新:以下是 Azure 门户中的 Application Insights View 的屏幕截图。持续时间值略有不同,但问题相同。
遗憾的是,包含创建/查询文档
和查询文档
文本的列在此处隐藏,因为在 Azure 门户中,您必须水平滚动才能查看该文本信息。
提前致谢,托比
最佳答案
只要查询成功就可以忽略400。他们是预料之中的。
Cosmos 服务将针对单个服务器分区(或分片)执行查询。跨分区查询预计由 SDK 处理,服务器拒绝 400。您可以通过 FeedOptions.MaxDegreeOfParallism 控制 SDK 执行的并发度。
关于Azure Cosmos DB : HTTP 400 in Application Insights,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50909769/