2008-12-24 134 views
30

我注意到,在我的一個生產Web應用程序中,當我手動回收應用程序池時,回收工作進程可能需要60多秒才能完全銷燬,基於在任務管理器中觀看它。但是,如果我完全停止應用程序池,工作進程幾乎會在1-2秒內即刻消失。IIS應用程序池 - 停止/啓動與回收

所以,我的問題是雙重的:

一)爲什麼會如此之長的銷燬過程(多有意義,當應用程序池,而不是回收釋放/使用的資源被它鎖定)停止;和

b)假設我已經停止將流量導向服務器,是否有任何理由不停止/啓動而不是回收?


編輯:爲了澄清,我之前無論是回收或停止應用程序池,我停止發送到有問題的服務器通信(服務器是在負載平衡羣集,我刪除了服務器來自負載平衡器)。因此,從理論上講,當我對應用程序池做任何事情時,都不會有任何請求來到網站。


編輯部分德塞夫勒:讀有約色的鏈接後,似乎很明顯,我發生了什麼。當我回收應用程序池時,新進程啓動,但由於根本沒有流量,因此它不會將新進程註冊爲正常運行,所以它不會關閉舊進程直到超時(即90秒)。

有了這些知識,我很清楚「回收」功能專門用於在服務器中間使用,並且由於我事先手動排空流量,所以我應該使用停止/啓動。

回答

23

a)由於Overlapped Recycling。有一段時間,「舊」過程等待新過程開始。

b)不,據我所知。

+0

該鏈接完全回答了這兩個問題,謝謝! – 2008-12-24 18:01:34

13

回收,如果我記得正確允許所有現有的請求完成,那麼它將回收應用程序池。停止只是在你停止的瞬間結束它。