来自asp.net web api的响应缓慢

来自asp.net web api的响应缓慢,asp.net,iis,asp.net-web-api,iis-express,Asp.net,Iis,Asp.net Web Api,Iis Express,我想知道是否有人知道为什么web api的响应从被请求的那一秒到返回的那一刻都很慢 我以为这是控制器中操作中的代码,所以我将其注释掉,然后返回ok,但是: 从邮递员呼叫时,仍然需要2.05秒(平均) 从IE调用时,仍然需要1.95秒(平均值) 我认为这是因为我运行的是iisexpress,但当部署到另一台服务器上的IIS时,我得到了非常相似的结果 我刚刚测试了另一个项目(个人项目)的请求时间,要请求、响应和发送1Mb数据,平均需要0.47ms 请求通过我的本地主机上的http进行 你知道是什么让

我想知道是否有人知道为什么web api的响应从被请求的那一秒到返回的那一刻都很慢

我以为这是控制器中操作中的代码,所以我将其注释掉,然后返回ok,但是:

  • 邮递员
    呼叫时,仍然需要2.05秒(平均)
  • IE
    调用时,仍然需要1.95秒(平均值)
  • 我认为这是因为我运行的是
    iisexpress
    ,但当部署到另一台服务器上的IIS时,我得到了非常相似的结果

    我刚刚测试了另一个项目(个人项目)的请求时间,要请求、响应和发送1Mb数据,平均需要0.47ms

    请求通过我的本地主机上的http进行

    你知道是什么让它慢下来的吗?我不明白从请求到响应,仅仅返回Ok怎么可能需要2秒钟

    更新-1

    以下是所要求的一些附加细节:

    • 获取请求
    • 总时间:2.19秒
    • 大小:2.6kb
    • 排队时间:1.56毫秒
    • 暂停:1.27毫秒
    • 发送的请求:0.38ms
    • 等待时间(TTFB):2.18秒
    • 内容下载:1.14ms

    您是否比较了F12开发者工具网络选项卡中的事件时间线。首先,我们需要知道哪个过程比您的个人项目慢。暂停?发送?等待(TTFB)?还是下载

    如果TTFB中的请求很慢,您可以尝试设置FRT规则以捕获失败的请求跟踪性能日志,并比较导致性能慢的模块


    你说的是平均次数,所以我假设你一个接一个地提出请求,没有给任何应用程序池一个停止的机会?@CraigH No,我刚刚多次从Postman或IE中调用特定url,并观察每个请求所用的时间。以邮递员为例,大概是2.08,2.05,2.11,2.03等等。。。IE大约是1.95,1.90,1.98。请记住,我的控制器中的操作被更改为除了返回OK作为状态码之外什么都不做,所以它应该是超快速的,但不知何故它不是。至少它看起来是一致的。。。您是否在管道中添加了任何可以在每个请求中执行的内容(如身份验证过滤器)?或正在运行的控制器/方法上的自定义属性?也许这样做会导致数据库查找速度非常慢?当在同一台计算机上,一个应用程序速度快,另一个应用程序速度慢时,您需要识别差异。我们不能为您这样做,因为您没有在这两个项目上共享任何细节。您的控制器的构造函数中是否有任何缓慢的代码部分(例如DB调用)?每一个请求都会创建一个新的控制器实例。我使用开发人员工具给出了在IE中使用请求所花费的时间。至于过程,我不确定你的意思是什么?我的工作和个人项目都是ASP.NET Web API,为了测试我的工作项目为何如此缓慢,我在相关控制器中的一个操作中注释了所有代码,并返回OK作为响应,从而消除了我的服务逻辑。在任何情况下,服务逻辑只花了大约400毫秒,距离2秒还很远。我正在执行的操作是一个标准的GET请求,没有什么特别之处。我会阅读你提供的链接,看看是否有帮助。我是说。我们需要知道应用程序下载或等待服务器响应的速度较慢。如果低性能来自服务器端。然后,我们从失败的请求跟踪开始,找出这种低性能是否是由asp.net模块引起的。我已经根据请求更新了答案。我将对一个get请求进行同样的尝试,该请求完全不做任何操作,只返回与我最初的测试相同的ok值,并且花费了同样长的时间。IIS服务器似乎花费了大约2秒钟来处理该请求。我认为您可以启用失败的请求跟踪,在2秒内记录请求。然后我们就会知道哪个模块会影响性能。如果低性能问题是由asp.net管道引起的。然后,您可能需要使用调试诊断捕获性能转储,并使用WINDBG或调试诊断工具分析进行专业转储分析。