我正在编写一个托管在IIS7上的ASP.NET Web API应用程序(无需特殊配置)。
我的问题是,对于每个第一个请求(在新机器/新浏览器/一段时间后...)即使是在返回常量的请求上,也会有很长的延迟!
我读过“热身”脚本,但这不是这里的问题。看起来web服务器正在尝试创建一个会话,这需要很长时间。有什么建议吗?
编辑
我认为延迟是由为每个新会话创建工作进程造成的。现在的问题是,为什么它这么慢,为什么web服务器不重用活动的工作进程来服务请求?
我已经将应用程序池配置为将工作进程限制为5,并且没有超时(设置为0)。这导致前五个会话在第一次请求时变慢(我可以忍受),现在工作进程是活动的。但令人惊讶的是,请求有时会再次变慢!
发布于 2013-11-24 17:44:57
如果你使用的是Windows Server2008 R2,你可以在应用程序池上使用configure the Auto-Start feature
。此外,在应用程序池的属性中,您应该禁止定期回收应用程序池。但请记住,虽然这将限制速度,但应用程序池仍可由IIS回收。有了自动启动功能,它将再次自动加载到内存中,但Application_Start
中的代码将在下一次请求时执行。所以你仍然可以观察到一些缓慢的现象。
发布于 2016-05-20 21:44:31
另一个原因可能是https。我们的网站可以使用或不使用https。仅在使用https时才会出现第一页的延迟(5到15秒)。这篇文章解释了https的问题和修复:
https://stackoverflow.com/questions/20165670
复制相似问题