Asp.Net App Pool重叠回收时间?

时间:2010-10-28 18:25:15

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

我最好能告诉员工流程何时回收:

a)新的一个在旧的关闭之前旋转 b)旧服务完成所有活动请求后,旧服务器将关闭

上述准确吗?

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

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

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

提前欢呼

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

1 个答案:

答案 0 :(得分:5)

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

您的技术很难在网络农场网络花园方案中进行管理。

我认为更好的设计是依靠进程外存储来存储数据(使用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