【问题标题】:IIS Process RecyclingIIS进程回收
【发布时间】:2012-10-22 21:29:54
【问题描述】:

我已经阅读了MSDN article (link),其中提到了有关 IIS 进程回收的内容,结果表明

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

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

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

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

所以,我有点困惑。

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

我想知道的是,如果有任何机会,任何机会,IIS 会以如此糟糕的方式崩溃并崩溃我的应用程序,还是我不应该担心?

【问题讨论】:

  • 为什么您认为您的应用程序无法在多实例环境中运行?
  • 因为Session 的一些增量和其他可以通过locks 很好控制的东西。
  • 我相信这完全取决于您如何使用工作线程配置应用程序池。如果您将其设置为 1 并且没有网络场。那你应该没事。
  • 你读过我上面链接的内容吗?即使只有一个工人,也总会有一个回收利用,它可以并且将在第一个线程仍在工作时创建第二个线程。
  • ..and requests are then directed to the new process. 据我所知,这不会对会话变量等造成任何奇怪的问题。你有你的会话 inproc 还是在 sql/sessionstateserver

标签: c# asp.net-mvc iis application-pool recycle


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-04-06
    • 2010-12-03
    • 2017-05-01
    • 2011-09-20
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2011-05-30
    • 2010-10-10
    相关资源
    最近更新 更多