首次Web API会话请求非常缓慢。

22

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

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

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

编辑

我认为延迟是由于为每个新会话创建Worker-Process引起的。现在的问题是,为什么这样慢,为什么Web服务器不重用已有的工作进程来处理请求?

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


发生了什么?这是第一个请求在一段时间后变得如此缓慢,来自新的浏览器窗口,新的机器,所有这些条件或其中任何一个? - Konrad Kokosa
任何一种情况都不会发生在我的电脑上,所以我猜想这是一个IIS配置问题。 - Niro
每天在CRM和SharePoint中,我们启动Web应用程序时都感到非常的延迟,这对于SharePoint网站有用吗? - saber tabatabaee yazdi
2个回答

15
如果您使用的是Windows Server 2008 R2,您可以在应用程序池上配置自动启动功能。此外,在应用程序池的属性中,您应该禁用其定期回收。需要注意的是,虽然这将限制缓慢,但应用程序池仍可能被IIS回收。通过Auto-Start功能,它将再次自动加载到内存中,但是您的Application_Start中的代码将在下一次请求时执行。因此,您仍可能观察到一些缓慢情况。

谢谢。现在好多了。我在一段时间没有访问该服务后仍然存在一些性能问题,但在静态操作中它总是快速返回(其他涉及EF)。 - Niro
有没有解决方案可以在仍使用IIS 6.0的情况下实现? :( 据我所知,此功能仅适用于IIS版本7.5或更高版本。 - Tomas Walek
@TomasWalek,很抱歉没有。这也是我升级的主要原因之一。 - Darin Dimitrov
这对SharePoint网站有用吗?因为我们每天的第一个请求都会有很多延迟。 - saber tabatabaee yazdi

0

另一个原因可能是https。我们的网站可以使用https和非https运行。第一页的延迟(5至15秒)仅在使用https时发生。本文解释了https问题及其解决方法:

MCS团队的https问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接