使用 IIS 5.0 時,如果一個運(yùn)行于低隔離模式或運(yùn)行于中隔離模式的 Web 網(wǎng)站發(fā)生了一次失效,那么重啟網(wǎng)站的唯一方法就是重啟整個 IIS。這樣做會導(dǎo)致 IIS 突然停止服務(wù),所以,在重啟過程中到達(dá)的請求都將發(fā)生失效。
IIS 6.0 引入了一種革命性的概念,即重疊處理的概念?;谥丿B處理的概念,即使一個應(yīng)用程序池被回收,所有后來到達(dá)的請求仍然可以繼續(xù)得到服務(wù)。IIS 7.0 仍然支持這個概念。
如果某個應(yīng)用程序池被回收,那么現(xiàn)有的工作進(jìn)程并沒有馬上退出,而是啟動第二個工作進(jìn)程,一旦第二個進(jìn)程啟動成功,Http.sys 隨即將所有的新的請求發(fā)送給這個新的工作進(jìn)程。當(dāng)現(xiàn)有的工作進(jìn)程處理完所有請求之后即關(guān)閉退出。因?yàn)?Http.sys 可以在將到達(dá)的請求發(fā)送給新的工作進(jìn)程之前,完成對已到達(dá)的請求進(jìn)行排隊(duì)處理的操作,因此,在回收應(yīng)用程序池的過程中,不會發(fā)生丟失頁面請求的現(xiàn)象。
盡管在回收應(yīng)用程序池的過程中不會發(fā)生頁面請求丟失現(xiàn)象,也不會出現(xiàn)頁面請求發(fā)生失效的情況,但是對回收過程而言,確實(shí)可能存在不良影響,這是因?yàn)樵诨厥諔?yīng)用程序池的過程中,所有保存在工作進(jìn)程中的數(shù)據(jù)都將丟失。默認(rèn)情況下,ASP.NET 保存了會話狀態(tài)數(shù)據(jù)和進(jìn)程內(nèi)緩存數(shù)據(jù)(我們稱之為 InProc 數(shù)據(jù))。這些數(shù)據(jù)的有效時間與工作進(jìn)程的存活時間完全相同,因此在回收應(yīng)用程序池的過程中,必須重新創(chuàng)建這些數(shù)據(jù)。所以,必須考慮在進(jìn)程外保存會話狀態(tài)數(shù)據(jù)??梢栽?StateServer、SQLServer,或其他外部會話狀態(tài)存儲區(qū)中保存會話狀態(tài)數(shù)據(jù)。此外,當(dāng)啟動一個新的工作進(jìn)程時,可能會發(fā)生加載性能問題。此時,IIS 和 ASP.NET 的各個方面內(nèi)容都必須加載到工作進(jìn)程中,因此總的來說加載時間還是比較長的,常常需要耗費(fèi)幾秒鐘的時間。因此,與應(yīng)用程序池正常運(yùn)行情況相比,應(yīng)用程序池回收之后運(yùn)行的第一個頁面常常要花費(fèi)更多時間才能正常運(yùn)行。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。