我有一个运行在ASP.NET上的网站,处理了一定数量的请求(大约分布在3个服务器上的每分钟500个请求),通常请求需要15毫秒左右。然而,我发现经常会出现耗时很长的请求(1秒或更长时间)。我已经确定延迟是由于调用
每个单独的任务都有度量,并且完成时间不超过10毫秒。我已经将延迟定位到了
Task.WhenAll
引起的。以下是有问题的代码示例:var taskA = dbA.GetA(id);
var taskB = dbB.GetB(id);
var taskC = dbC.GetC(id);
var taskD = dbD.GetD(id);
await Task.WhenAll(taskA, taskB, taskC, taskD);
每个单独的任务都有度量,并且完成时间不超过10毫秒。我已经将延迟定位到了
Task.WhenAll
调用,似乎与任务的调度方式有关。据我所知,TPL任务池没有太大的压力,因此我不知道为什么性能如此不稳定。请注意保留HTML标签。
Task.WhenAll
还是await Task.WhenAll
吗?因为它们会测量非常不同的东西。 - Kevin Gosse