【问题标题】:Slow response from asp.net web api来自 asp.net web api 的响应缓慢
【发布时间】:2020-01-13 09:51:24
【问题描述】:

我想知道是否有人知道为什么来自 web api 的响应从请求到返回时会很慢。

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

  1. Postman 调用时,仍然需要 2.05 秒(平均)
  2. IE 调用时,仍然需要 1.95 秒(平均)

我认为这是因为我在 IIS Express 中运行,但是当部署到另一台服务器上的 IIS 时,我得到了非常相似的结果。

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

请求是通过我的本地主机上的 http 发出的。

任何想法可能会减慢它的速度吗?我不明白从请求到响应仅返回 Ok 需要 2 秒??

Update-1

以下是应要求提供的一些其他详细信息:

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

【问题讨论】:

  • 您说的是平均时间,所以我假设您是一个接一个地发出请求,而不是让任何应用程序池有机会停止?
  • @CraigH 不,我刚刚从 Postman 或 IE 多次调用了特定的 url,并观察了每个请求所花费的时间。以 Postman 为例,它类似于 2.08、2.05、2.11、2.03 等……而 IE 类似于 1.95、1.90、1.98。请记住,我的控制器中的操作已更改为除了返回 OK 作为 StatusCode 之外什么都不做,所以它应该非常快,但不知何故它不是。
  • 至少看起来是一致的......你有没有在每个请求上执行的管道中添加任何东西(如身份验证过滤器)?或者正在运行的控制器/方法上的自定义属性?也许这样的事情正在做一个非常慢的数据库查找?
  • 当在同一台机器上一个应用程序快而另一个应用程序慢时,您需要识别差异。我们不能为你做这件事,因为你没有分享任何一个项目的细节。
  • 您的控制器的构造函数中是否有任何代码部分(例如数据库调用)可能很慢?每次请求都会创建一个新的控制器实例。

标签: asp.net iis asp.net-web-api iis-express


【解决方案1】:

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

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

https://blogs.msdn.microsoft.com/tess/2008/08/19/troubleshooting-a-performance-issue-with-failed-request-tracing-and-appcmd-in-iis7/

【讨论】:

  • 我使用开发者工具给我在IE中使用时请求所花费的时间。至于过程,我不知道你的意思是什么?我的工作和个人项目都作为 ASP.NET Web API 进行测试,以了解为什么我的工作项目如此缓慢,我在相关控制器中的一个操作中注释了所有代码,并返回 OK 作为响应,从而消除了我的服务逻辑是罪魁祸首。无论如何,服务逻辑只用了大约 400 毫秒,距离 2 秒还很远。
  • 我正在执行的操作是一个标准的 GET 请求,并没有什么特别之处。我会阅读您提供的链接,看看是否有帮助。
  • 我的意思是这个。 i.ibb.co/7Xv2vCT/slow1.png。我们需要知道应用程序在下载或等待服务器响应时速度较慢。如果低性能来自服务器端。然后我们从Failed request tracking开始,判断这个性能低下是不是asp.net模块造成的
  • 我已按要求更新了答案。我将尝试使用 get 请求进行相同的操作,该请求完全不执行任何操作,并且只返回 ok,就像我在原始测试中所做的那样,并且花费的时间一样长。
  • 似乎 IIS 服务器花费了大约 2 秒来处理请求。我认为您可以启用失败的请求跟踪以记录超过 2 秒的请求。然后我们就会知道哪个模块正在影响性能。如果低性能问题是由 asp.net 管道引起的。然后您可能需要使用调试诊断捕获性能转储,并使用 WINDBG 或调试诊断工具分析进行专业的转储分析。 blogs.msdn.microsoft.com/docast/2016/04/28/…
猜你喜欢
  • 2018-04-28
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 2016-04-06
  • 2013-10-31
相关资源
最近更新 更多