Azure Cosmos DB:Application Insights中的HTTP 400

时间:2018-06-18 12:40:21

标签: azure asp.net-core azure-cosmosdb azure-application-insights

我们在Azure应用服务(某些Web API)中使用Application Insights,该服务查询 .NET Core 2.1 中的Azure Cosmos数据库。使用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视图的屏幕截图。持续时间值略有不同,但问题相同。

Screenshot of Application Insights view

不幸的是,此处隐藏了包含Create/query documentQuery documents文本的列,因为在Azure门户中,您必须水平滚动才能查看该信息。

先谢谢,Tobi

1 个答案:

答案 0 :(得分:5)

只要查询成功,您就可以忽略400。他们是预期的。

Cosmos服务将对单个服务器分区(或Shard)执行查询。跨分区查询预计将由SDK处理,服务器拒绝则为400。您可以通过FeedOptions.MaxDegreeOfParallism控制SDK执行的并发性。