2012-11-02 101 views
0

我已閱讀MSDN article (link)它說有關IIS進程回收的東西,事實證明,舊的工作進程停止之前IIS進程回收

的新進程啓動,然後請求定向到新的處理。

但是,當我讀到了那篇文章我看到這個的下一個部分:

發生多實例的:在多實例,同時一個進程運行的兩個或多個實例。根據應用程序池的配置方式,可以運行多個工作進程實例,每個實例都可能加載並運行相同的應用程序代碼。重複回收的發生是多實例化的一個例子,Web園區中的兩個或多個進程爲應用程序池提供服務,而不管回收設置如何。

如果您的應用程序無法在多實例環境中運行,則必須僅爲應用程序池配置一個工作進程(這是默認值),並且在使用應用程序池回收的情況下禁用重疊的回收功能。

所以,我有點困惑。

一方面,我很滿意,當所有的網絡請求立即和永久的變成到新的流程實例。另一方面,如果我的應用程序在上面引用「無法在多實例環境中運行」,則本文建議我不要使用回收。這意味着,在我看來,請求可能是流程作爲一個或另一個流程實例,這是我的應用程序邏輯不允許的。

我想知道的是,如果有機會,有任何機會,IIS可能走得這麼糟糕,崩潰我的應用程序,或者我不應該擔心它?

+0

爲什麼您認爲您的應用程序無法在多實例環境中運行? –

+0

由於'Session'和其他可以用'lock'控制的東西的一些增量。 – AgentFire

+0

我相信這完全取決於如何使用工作線程來配置應用程序池。如果您將其設置爲1並且沒有網站羣。那你應該沒問題。 –

回答

1

IIS默認會定期回收;這是正常和健康的行爲(釋放系統資源)。 IIS只會暫時爲同一個應用程序運行多個進程。在回收過程中,新流程將開始運行,直到當前活動完成或超時時間到期爲止。如果您擔心會話狀態,請查看狀態服務器(SQL是首選方法)。我有幾個關於這個問題的帖子,但看看這個link