我有一个单例Cosmos DB客户端作为一个具有默认选项的单例运行。我使用的是一个.NET 6.0 WebAPI项目,运行在一个启用“始终打开”的Azure应用程序服务中。和Cosmos帐户位于同一区域,即UE2。API查询Cosmos容器并返回结果。
我已经注意到,第一个查询的延迟总是很慢(4-6秒),随后的查询要快得多(-100 is ),但有时也会有随机的高延迟。这不是冷启动方案,客户端已经被DI管道初始化了。我也不受利率限制。
这是我的单身客户
public CosmosDbService(IConfiguration configuration)
{
var account = configuration.GetSection("CosmosDb")["Account"];
var key = configuration.GetSection("CosmosDb")["Key"];
var databaseName = configuration.GetSection("CosmosDb")["DatabaseName"];
var containerName = configuration.GetSection("CosmosDb")["Container"];
CosmosClient client = new (account, key);
_myContainer = client.GetContainer(databaseName, containerName);
}下面是传递Linq查询的查询的内容:
public class RetrieveCarRepository : IRetrieveCarRepository
{
public async Task<List<CarModel>> RetrieveCars(IQueryable<CarModel> querydef)
{
var query = querydef.ToFeedIterator();
List<CarModel> cars = new ();
while (query.HasMoreResults)
{
var response = await query.ReadNextAsync();
foreach (var car in response)...do a thing我已经看过几个宇宙训练视频和宇宙课程,但仍然无法对正在发生的事情有一个想法。
发布于 2022-08-23 22:34:56
从评论中。
有关使用.NET SDK的查询性能,请参见:https://learn.microsoft.com/en-us/azure/cosmos-db/performance-tips-query-sdk?tabs=v3&pivots=programming-language-csharp#use-local-query-plan-generation
在以下情况下,查询计划生成可能会影响延迟,并且可以避免:
该查询是在一个分区上重新处理的(而不是cross-partition).
在这两种情况下,都应该删除查询计划请求并改进延迟。
作为一般规则,应该对P99上的延迟进行1小时的调查,以了解它是如何受到影响的。几个较高的延迟请求总是会发生。
还请记住,查询延迟将根据查询类型、要传输的数据量和页面数而有所不同。您可以捕获诊断并使用:https://learn.microsoft.com/azure/cosmos-db/troubleshoot-dot-net-sdk-slow-request
https://stackoverflow.com/questions/73463172
复制相似问题