【发布时间】:2020-01-13 09:51:24
【问题描述】:
我想知道是否有人知道为什么来自 web api 的响应从请求到返回时会很慢。
我认为这是控制器中的操作中的代码,所以我将其注释掉,我只是返回 ok 但是:
- 从
Postman调用时,仍然需要 2.05 秒(平均) - 从
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