第一个 Web API 会话请求很慢

Posted

技术标签:

【中文标题】第一个 Web API 会话请求很慢【英文标题】:First Web API session request is very slow 【发布时间】:2013-12-08 13:28:45 【问题描述】:

我正在编写一个托管在 IIS7 上的 ASP.NET Web API 应用程序(无特殊配置)。

我的问题是,对于每个第一个请求(在新机器/新浏览器上/一段时间后......)都会有很长的延迟 - 即使是返回常量的请求!

我已经阅读了有关“预热”脚本的信息,但这不是这里的问题。似乎 Web 服务器正在尝试创建会话,并且需要很长时间。有什么建议吗?

编辑

我认为延迟是由每个新会话的工作进程创建引起的。现在的问题是为什么它这么慢,为什么网络服务器不重用活的工作进程来服务请求?

我已将应用程序池配置为将工作进程限制为 5 个且无超时(设置为 0)。这导致前五个会话在第一次请求时变慢(我可以忍受),现在工作进程还活着。但令人惊讶的是,有时请求又变慢了!

【问题讨论】:

到底发生了什么?一段时间后,来自新浏览器窗口、来自新机器、所有这些条件或其中任何一个条件的第一个请求是否如此缓慢? 其中任何一个。在我自己的 PC 上不会发生,所以我猜这是 IIS 配置问题 在 CRM 和 SharePoint 中,我们每天都感觉到启动 Web 应用程序的延迟非常大,这对 SharePoint 网站有用吗??? 【参考方案1】:

如果您使用的是 Windows Server 2008 R2,您可以在应用程序池上configure the Auto-Start feature。此外,在应用程序池的属性中,您应该禁止它定期回收。请记住,虽然这会限制速度,但应用程序池仍然可以被 IIS 回收。使用自动启动功能,它将再次自动加载到内存中,但您的 Application_Start 中的代码将在下一个请求时执行。所以你仍然可以观察到一些缓慢。

【讨论】:

谢谢。现在好多了。在一段时间没有访问该服务后,我仍然遇到一些性能问题,但是在静态操作中它总是很快返回(其他涉及 EF)。 在 IIS 6.0 仍在使用的情况下有什么解决方案吗? :( AFAIK 此功能仅在 IIS 7.5 或更高版本中可用。 @TomasWalek,不,恐怕没有。这是我升级的主要原因之一。 这对 SharePoint 网站有用吗???因为我们每天第一次请求都有很多延迟【参考方案2】:

另一个原因可能是 https。我们的网站可以在有和没有 https 的情况下运行。第一页的延迟(5 到 15 秒)仅在使用 https 时发生。这篇文章解释了 https 的问题和修复:

https issue by the MCS team

【讨论】:

以上是关于第一个 Web API 会话请求很慢的主要内容,如果未能解决你的问题,请参考以下文章

会话 cookie 与 JWT

Facebook API 批量请求很慢

Java Web高级编程

来自新设备的 ASP.NET 第一个请求很慢 [关闭]

Shiro 中的并发会话控制

Node.js Express Spotify API保存在会话中