Web API处于非活动状态5分钟后响应时间过长

High responsetime from Web API after 5 min inactivity

本文关键字:响应时间 5分钟 活动状态 API 于非 Web      更新时间:2023-09-26

我在预生产环境中遇到了一个奇怪的问题。

我有一个网站,它在另一台服务器上托管的WebApi上执行一些操作。

通常情况下,发出特定的发布请求需要不到一秒钟的时间,但在5分钟的不活动后,相同的发布请求将需要10-30秒。(根据谷歌chrome网络标签)

所提到的张贴请求不是所执行的请求列表中的第一个请求。

请求是使用Ajax完成的。

我运行了SQL探查器来查看数据库查询是否运行缓慢,但这些查询都运行良好,POST请求似乎只是延迟返回。

你们知道为什么会发生这种事吗?

一个很可能的原因是在数据库级别进行编译。第一次使用大多数数据库引擎运行查询时,必须编译sql并制定执行计划。然后将其缓存一段时间。当它不再被缓存时,它必须再次被缓存。sql字符串越长,编译所需的时间就越长。

解决方案是使用存储过程。一旦它运行,它就会保持编译状态,并且执行计划始终可用。

问题解决了!

问题是在请求中使用SMTPClient发送了一封电子邮件。

在web应用程序中,smtp客户端不是异步的,因此必须在POST请求返回之前发送它。

使用TheCodeKing对此问题的回复使其异步:如何避免从应用程序发送电子邮件时出现延迟?

解决了问题!