【问题标题】:Asp.Net App Pool Overlapped Recycling Timing?Asp.Net App Pool 重叠回收时机?
【发布时间】:2011-05-02 01:17:29
【问题描述】:

据我所知,工作进程何时回收:

a) 一个新的在旧的关闭之前启动 b) 一旦所有活动请求其服务完成,旧的就会关闭

以上准确吗?

如果是这样,一旦 Application_End() 从 global.ascx 文件中触发,我就会将数据存储在 SQL 中。当 Application_Start() 触发时,我将这些数据拉回。

问题是基于我的测试,新的工作进程会在我的旧工作进程有机会完成其 Application_End() 之前触发 Application_Start()。

处理这种情况的最佳做法是什么?

提前喝彩

编辑:我刚刚注意到 IIS 7 '禁用重叠回收'的一个功能 - 我猜这是最好的路线

【问题讨论】:

    标签: asp.net iis-7 application-pool


    【解决方案1】:

    您对重叠回收的描述是准确的,是的 (1);并且有一个禁用它的设置,但它旨在防止您将重新引入的 HTTP 错误。应用程序池回收是您必须设计的托管应用程序的正常情况(除其他外,源于阻止在同一内存空间中卸载程序集的 CLR 限制)。

    您的技术在 web-farmweb-garden 场景中很难管理。

    我认为更好的设计是依赖进程外的数据存储(使用分布式缓存产品,如 ScaleOut、App Fabric 等),以便所有应用程序池对缓存数据具有相同的视图.

    (1) - http://mvolo.com/blogs/serverside/archive/2008/02/25/Starting_2C00_-stopping-and-recycling-IIS-7.0-Web-sites-and-application-pools.aspx

    【讨论】:

    • 是的,我同意,如果我们的应用程序可扩展并需要进入网络农场/花园场景,这种方法会让我陷入困境。是否有任何免费的分布式缓存产品 - 我猜大多数都有很高的成本?
    • Windows Server AppFabric 是 Windows Server 的免费扩展 - 也有望成为未来 Windows Server 版本的本机组件。
    • 你说得对——分布式缓存确实是最好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2011-02-07
    • 2010-11-19
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    相关资源
    最近更新 更多