首页 > 解决方案 > IIS 在 .net webapi 响应中在哪里浪费时间?

问题描述

上下文:WebApiController 调用业务对象(这些业务对象创建并运行几个线程来处理来自不同提供者的数据),加入它们之后,webapi 格式化一些字段或添加另一个字段:这是我们典型的 webapi 控制器的骨架:

xxxxController: WebApiController
{
   StopWatch timer.Start()
   .
   .
   businessLogic //1.create cache of some tables (around 5000 rows, 5/10Mb.) 
                 //2.create and run threads (10 aprox)
                 //2.1 every thread call external services via APIs
                 //3.wait the join of all threads.
   .
   .
   timer.Stop()
   log(timer.elapsedMilisecond)
}

在这里,一切都完美。控制器响应正确,数据正确,一切正常,但是,当我们开始测量时间以提高性能时,我们意识到我们在控制器内部测量的时间远小于测量的时间在客户端,我解释一下:

在控制器中测量的 AVG 为 30 秒。但在客户端(浏览器)中测量的经过时间约为 10-15 秒。更多的:

真实和空响应的客户端时间与 WebApiController 时间

所以我的问题是:IIS(或 .NET)在哪里消耗这些时间?

我已经分析了一个 webapi RQ 的管道,并且真诚地,不知道我们在哪里浪费了宝贵的时间。(https://www.asp.net/media/4071077/aspnet-web-api-poster.pdf

有人知道如何测量控制器返回后在 .NET 框架或 IIS 中发生的不同活动的时间吗?

提前致谢!

编辑:

客户端的时间详细信息(chrome-dev-tool)

标签: c#performanceasp.net-web-apigarbage-collectioniis-7.5

解决方案


推荐阅读