2010-10-28 75 views
5

盡我可以告訴當一個工作進程回收:Asp.Net應用程序池重疊回收時間?

一)舊關閉 B之前一個新的旋轉起來)舊關閉,一旦所有的活動請求的服務完成

以上是否準確?

如果是這樣,我有數據存儲在SQL中,一旦Application_End()從global.ascx文件中觸發。當Application_Start()被觸發時,我將這些數據返回。

問題是基於我的測試,新工作進程在我的舊工作進程有機會完成其Application_End()之前觸發Application_Start()。

處理這種情況的最佳做法是什麼?

歡呼提前

編輯:我只注意到在IIS 7「已禁用重疊回收站」功能 - 我猜這是最好的途徑

回答

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

+0

是的,我同意,這種做法給我留下的,如果我們的應用規模了一個難題,需要在網絡農場/花園情景頭。有沒有免費的分佈式緩存產品 - 我猜大多數有很大的成本? – downatone 2010-10-29 14:19:25

+0

Windows Server AppFabric是Windows Server的免費擴展 - 也預計是未來Windows Server發行版的本地組件。 – Nariman 2010-10-29 14:35:34

+0

你說得對 - 分佈式緩存確實是最好的選擇。 – downatone 2010-10-29 18:06:19

相關問題