如何防止IIS在不使用时关闭Web站点?

26

我有一个托管在IIS下的Web应用程序。它是一个数据仓库,在启动过程中需要实例化一大堆内存中的项目(需要大约20分钟才能完全设置)。由于这个网站对我们公司非常重要,所以这个系统白天必须在线100%,只能在下班时间重新启动。

由于某些原因,当一段时间没有使用后,这个Web应用程序似乎处于“离线”状态。我知道这是因为缓存没有完全实例化,当该网站被访问时。这是不可接受的。

我不清楚为什么网站会关闭。应用程序池每天只设置在4:00 AM进行循环(现在是上午11点)。

是否有其他设置我不知道IIS部分可以自动关闭网站?

附加说明:当在Visual Studio中的IISExpress中运行时,该网站不会自动关闭。只有托管在IIS上的生产版本会关闭。

以下是Web站点正在运行的应用程序池的高级设置屏幕截图。(不确定是否有用。)

Application Pool Settings

我使用的是IIS 7.5,Server 2008 R2。这是一个ASP.NET 5 Web应用程序。

1个回答

51

请查看屏幕截图中的进程模型下的空闲超时设置。当应用程序池在空闲状态超过20分钟时,该设置会导致其关闭。您可以将其设置为0,以使其始终保持运行,即使它处于空闲状态,即不处理任何请求。

输入图像描述

注意:让应用程序池始终保持运行将消耗服务器的宝贵内存。如果应用程序存在内存泄漏问题,则可能会变得非常关键。


4
谢谢,这解决了我的问题。至于内存消耗...在我的情况下还好。这是一个关键的内部网络应用程序,拥有自己专用的服务器。最重要的是保持其在线状态,以便用户可以在工作时间的任何时候快速访问数据。 - painiyff
3
值得注意的是,如果您的 Web 应用程序正在执行任何后台工作--例如通过 Hangfire 或 IHostedService--那么就不会被 IIS 视为 "活动",因此这些服务也将被关闭,并且在有新的传入请求之前不会重新启动。 - Chad Hedgcock
@ChadHedgcock 你的意思是,即使你指定了“空闲超时=0”?如果是这样的话,那么这个设置是否被违反了呢?我在使用这个设置后遇到了这样的情况(应用程序池被挂起),我一直在努力弄清楚为什么会发生这种情况。 - undefined

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