.net - (TTFB) 某些特定请求花费的时间比执行实际请求的时间长

标签 .net angular iis asp.net-core

标题可能看起来有点模糊,这是我的问题的详细信息。我有一个由 3 层组成的 Web 应用程序,一个 Angular 前端项目、.NET Core api 网关中间件项目和作为后端层的 .NET 项目。这三个项目都是相互独立的并且工作正常。我的问题是,在我的项目中的大多数端点中,请求都按预期在毫秒级别完成并返回数据,但其中一些端点似乎等待了无可辩驳的时间,并且这种情况是随机发生的。上述 GET 请求的 Chrome 响应计时输出如下所示。

Chrome 计时详细信息

Chrome response timing details

正如你上面所看到的,这里大部分时间都是在等待。另外,我在 stackify 中跟踪了这种请求,似乎请求是在 后端 项目中以 ms 级别完成的。 Stackify 输出如下所示。

Stackify 跟踪输出 stackify trace

如上所示,我的后端响应最长花费了 835 毫秒并返回了适当的响应。最后,从我的 网关 在 Kibana 中生成的日志中,我得到了以下计时日志,该日志还显示该请求花费了约 8 秒的时间。

API网关日志 enter image description here

总而言之,响应是在我的 api 网关项目(.NET Core)中等待的,我不知道为什么这种情况在某些端点上随机发生。最后,我只是向 api 网关项目中的相关端点发送请求,没有进行任何操作。为了了解并解决此问题,请提前感谢任何帮助和建议。

最佳答案

this 中所述博客文章中,事实证明,第一个请求的延迟可能是由注册为 Singleton 的服务引起的。为了解决这个问题,链接的博客文章建议创建一个预热启动功能来解决这个问题,而我主要注册我的服务Transient

此外,我观察到this前面提到的博客文章评论中的有用博客文章建议了如下解决方案。

The only reliable solution I could find is not very scientific: after deployment, simply send a couple of warmup requests to the endpoints of the api.

如上所述,我的解决方案是将实际的 http 请求发送到我的 api 项目。希望这可以帮助那些和我有同样问题的人。

关于.net - (TTFB) 某些特定请求花费的时间比执行实际请求的时间长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54142637/

相关文章:

.net - 从一堆图像生成视频的方法?

angular - 如何使用 Ag-grid 属性 tooltipField?

css - "angular-flex-layout"不在移动屏幕上为 "mat-form-fields"添加边距

asp.net - 如何停止调用 500 错误页面创建的 500 .net 错误

c# - 如何将虚拟目录配置为 IIS 中的应用程序

.net - 我修复了一个 TLS 1.2 问题,但我不知道它是如何/为什么工作的,或者它在做什么?这个 Powershell 命令在做什么?

c# - 泛型构造要求类型 'Cell<' T>' 是非托管类型

javascript - $注入(inject)器:modulerr Module Error after publishing application on IIS

c# - 从使用 AJAX 填充的下拉列表中获取值

Angular 拖放绝对位置元素选择了错误的索引