第一个Web API会话请求非常慢

时间:2013-11-23 17:40:29

标签: asp.net-mvc iis iis-7 asp.net-web-api

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

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

我已经读过关于"热身"脚本,但这不是问题。看起来Web服务器正在尝试创建会话,这需要很长时间。有什么建议吗?

修改

我认为延迟是由每个新会话的工作进程创建引起的。现在问题是为什么它如此缓慢,以及为什么Web服务器不重用生活工作者流程来处理请求?

我已将应用程序池配置为将工作进程限制为5而没有超时(设置为0)。这导致前五个会话在第一次请求(我可以忍受)上变慢,现在工作进程仍然存在。但令人惊讶的是,有时请求再次缓慢!

2 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:0)

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

https issue by the MCS team