C# IIS进程回收

C# IIS进程回收,c#,asp.net-mvc,iis,application-pool,recycle,C#,Asp.net Mvc,Iis,Application Pool,Recycle,我读过一些关于IIS进程回收的文章,结果发现 新进程在旧工作进程停止之前启动,然后将请求定向到新进程 但是,当我读到那篇文章的下一部分时,我看到: 发生多实例:在多实例中,一个进程的两个或多个实例同时运行。根据应用程序池的配置方式,工作进程的多个实例可能会运行,每个实例都可能加载并运行相同的应用程序代码。重叠回收的出现是多实例的一个例子,Web garden也是一个例子,其中两个或多个进程为应用程序池提供服务,而不管回收设置如何 如果应用程序无法在多实例环境中运行,则必须为应用程序池仅配置一个工

我读过一些关于IIS进程回收的文章,结果发现

新进程在旧工作进程停止之前启动,然后将请求定向到新进程

但是,当我读到那篇文章的下一部分时,我看到:

发生多实例:在多实例中,一个进程的两个或多个实例同时运行。根据应用程序池的配置方式,工作进程的多个实例可能会运行,每个实例都可能加载并运行相同的应用程序代码。重叠回收的出现是多实例的一个例子,Web garden也是一个例子,其中两个或多个进程为应用程序池提供服务,而不管回收设置如何

如果应用程序无法在多实例环境中运行,则必须为应用程序池仅配置一个工作进程(这是默认值),并在使用应用程序池回收时禁用重叠回收功能

所以,我有点困惑

一方面,当所有web请求立即和永久地定向到新流程实例时,我可以接受。另一方面,如果我的应用程序引用上面的“无法在多实例环境中运行”,本文建议我不要使用回收。这意味着,在我看来,请求可能是作为一个或另一个流程实例的流程,这是我的应用程序逻辑所不允许的


我想知道的是,如果有任何机会,任何机会,IIS可能会如此糟糕并崩溃我的应用程序,或者我不应该担心吗?

IIS默认情况下会定期回收;这是正常和健康的行为(释放系统资源)。IIS将仅临时为同一应用运行多个进程。在循环中,新流程将启动,而原始流程将仅在当前活动完成或超时期限到期之前运行。如果您关心会话状态,请查看状态服务器(SQL是首选方法)。我有几篇关于这个问题的帖子,但是请注意。

为什么您认为您的应用程序不能在多实例环境中运行?因为
会话中有一些增量以及其他可以通过
lock
s很好地控制的东西。我相信这完全取决于您如何用工作线程配置应用程序池。如果您将其设置为1并且没有webfarm。那你应该没事了。你读了我上面的链接了吗?即使只有一个工作线程,也总会有一个循环,在第一个线程仍在工作时,它可以并将创建第二个线程。
。然后请求被定向到新进程。
据我所知,这不会导致会话变量等出现任何奇怪的问题。另外,您的会话是在PROC中还是在sql/sessionstateserver中