什么是IIS應(yīng)用程序池以及應(yīng)用程序池詳解
更新時(shí)間:2007年02月07日 00:00:00 作者:
什么是應(yīng)用程序池呢?這是微軟的一個(gè)全新概念:應(yīng)用程序池是將一個(gè)或多個(gè)應(yīng)用程序鏈接到一個(gè)或多個(gè)工作進(jìn)程集合的配置。因?yàn)閼?yīng)用程序池中的應(yīng)用程序與其他應(yīng)用程序被工作進(jìn)程邊界分隔,所以某個(gè)應(yīng)用程序池中的應(yīng)用程序不會(huì)受到其他應(yīng)用程序池中應(yīng)用程序所產(chǎn)生的問題的影響。
Windows 2003同時(shí)支持兩種工作模式,默認(rèn)為ISS 6.0工作進(jìn)程隔離模式。工作進(jìn)程隔離模式防止一個(gè)應(yīng)用程序或站點(diǎn)停止了而影響另一個(gè)應(yīng)用程序或站點(diǎn),大大增強(qiáng)了IIS的可靠性。那么如何設(shè)置兩種工作模式呢?
啟動(dòng)IIS管理器,右擊網(wǎng)站,選擇“屬性”,打開屬性對(duì)話框。在IIS 6.0工作進(jìn)程隔離模式下,所有的應(yīng)用程序代碼都在隔離環(huán)境中運(yùn)行,它們是如何進(jìn)行隔離的呢?Windows 2003新增了應(yīng)用程序池,工作進(jìn)程隔離模式允許客戶創(chuàng)建多個(gè)應(yīng)用程序池,每個(gè)應(yīng)用程序池都可以有不同的配置。因?yàn)檫@些應(yīng)用程序池直接從內(nèi)核(而非WWW服務(wù))接收它們的請(qǐng)求,所以性能和可靠性得到了增強(qiáng)。要隔離運(yùn)行在同一臺(tái)計(jì)算機(jī)上但屬于不同網(wǎng)站的Web應(yīng)用程序,需要為每個(gè)網(wǎng)站創(chuàng)建單獨(dú)的應(yīng)用程序池。
創(chuàng)建應(yīng)用程序池
在IIS管理器中,打開本地計(jì)算機(jī),右鍵單擊“應(yīng)用程序池”,選擇新建“應(yīng)用程序池” (必須在工作進(jìn)程隔離模式下才能建立應(yīng)用程序池) ?!皯?yīng)用程序池名稱”框中,輸入新的應(yīng)用程序池名稱。如果在“應(yīng)用程序池 ID”框中出現(xiàn)的 ID (如:AppPool #1)不是您想要的,可進(jìn)行重命名。如果您單擊了“將現(xiàn)有應(yīng)用程序池作為模板”,請(qǐng)?jiān)凇皯?yīng)用程序池名稱”框中右鍵單擊想要用來作為模板的應(yīng)用程序池。最后單擊[確定]。
指派應(yīng)用程序池
在 IIS 管理器中,右鍵單擊您要為其指派應(yīng)用程序池的應(yīng)用程序,然后單擊“屬性”。 單擊“主目錄”選項(xiàng)卡,確認(rèn)您正在指派的目錄或虛擬目錄的“應(yīng)用程序名”是否已被填寫。如果“應(yīng)用程序名”框尚未被填寫,請(qǐng)單擊“創(chuàng)建”,然后輸入名稱。
在“應(yīng)用程序池”列表框中,選擇您想要為其指派的應(yīng)用程序池的名稱。最后單擊[確定]。
一起來看看有關(guān)應(yīng)用程序池的一些問題。應(yīng)用程序池的“屬性”對(duì)話框有四頁——回收,性能,運(yùn)行狀況,標(biāo)識(shí),如圖六所示。在這些選項(xiàng)頁中,最引人注目的恐怕就是“回收”頁,使用該選項(xiàng)頁可以管理工作進(jìn)程的回收。在工作進(jìn)程隔離模式中,IIS可以配置成定期重新啟動(dòng)應(yīng)用程序池中的工作進(jìn)程,從而更好地管理那些有錯(cuò)誤的工作進(jìn)程。這確保了池中的應(yīng)用程序運(yùn)行正常,并且可以恢復(fù)丟失的系統(tǒng)資源。為了回收工作進(jìn)程,失敗工作進(jìn)程接收請(qǐng)求的能力將被限制,直到它處理完存儲(chǔ)在請(qǐng)求隊(duì)列中的所有剩余請(qǐng)求。為了排出當(dāng)前請(qǐng)求,可以給予進(jìn)程配置限制。同一命名空間組的替換工作進(jìn)程在舊的工作進(jìn)程停止前啟動(dòng),從而防止服務(wù)中斷。舊的進(jìn)程完成其未決的請(qǐng)求,然后正常關(guān)閉,或者如果在達(dá)到了配置的時(shí)間限制、請(qǐng)求數(shù)、設(shè)置的時(shí)間計(jì)劃,或當(dāng)達(dá)到指定的內(nèi)存用量限制后仍沒有關(guān)閉,則明確地終止進(jìn)程。默認(rèn)情況下,應(yīng)用程序池每隔1740分鐘(29小時(shí))回收一次。
W3SVC根據(jù)“運(yùn)行狀況”頁的選項(xiàng)來判斷應(yīng)用程序池運(yùn)行是否正常,包括:每隔指定的時(shí)間Ping工作進(jìn)程,時(shí)間按秒計(jì),默認(rèn)值30秒啟動(dòng)時(shí)間限制(工作進(jìn)程必須在指定的時(shí)間內(nèi)開始)關(guān)閉時(shí)間限制(工作進(jìn)程必須在指定的時(shí)間內(nèi)關(guān)閉)是否啟動(dòng)快速失敗保護(hù)(如果在指定的時(shí)間段內(nèi)一定數(shù)目的工作進(jìn)程發(fā)生失敗,則禁用應(yīng)用程序池)。另外,ISAPI應(yīng)用程序(包括ASP.NET和asp.dll)可以聲明自己不再適合提供服務(wù),要求回收。
默認(rèn)情況下,當(dāng)IIS 6.0回收一個(gè)池時(shí),它會(huì)使用一種稱為overlapped recycle的回收技術(shù)。在這種回收模式下,失敗的工作進(jìn)程仍會(huì)保持運(yùn)行狀態(tài),同時(shí)創(chuàng)建一個(gè)新的工作進(jìn)程。IIS 6.0把新傳入的請(qǐng)求傳遞給新的工作進(jìn)程,但不拆除老的工作進(jìn)程,直至老的工作進(jìn)程處理完它隊(duì)列中的請(qǐng)求,或者遇到超時(shí)錯(cuò)誤。在此期間,TCP/IP連接不會(huì)丟失,因?yàn)橛衕ttp.sys保持著連接的有效性。當(dāng)失敗的工作進(jìn)程超時(shí)出錯(cuò)時(shí),下一個(gè)請(qǐng)求傳遞給工作進(jìn)程的請(qǐng)求是新的請(qǐng)求,因此原來保存在進(jìn)程中的會(huì)話信息就會(huì)丟失。所有這類回收操作都自動(dòng)進(jìn)行,無需管理員干預(yù),而且在大多數(shù)情況下,不會(huì)造成明顯的服務(wù)中斷現(xiàn)象。如有必要,可以將配置數(shù)據(jù)屬性LogEventOnRecycle的值設(shè)置為1,指示W(wǎng)3SVC執(zhí)行回收操作時(shí)生成一條事件日志記錄。
對(duì)于那些不能以多個(gè)實(shí)例運(yùn)行的應(yīng)用程序,overlapped recycle回收技術(shù)可能引起問題。如果遇到這類問題,可以將配置數(shù)據(jù)屬性DissallowOverlappingRotation的值設(shè)置成True(1),關(guān)閉某個(gè)應(yīng)用程序池回收操作時(shí)的進(jìn)程“重疊”現(xiàn)象。另外,對(duì)于失敗的工作進(jìn)程,有時(shí)我們可能不想將它拆除,仍舊保留該進(jìn)程,以便檢測(cè)和尋找發(fā)生問題的根源,這時(shí)可以將配置數(shù)據(jù)屬性O(shè)rphanActionExe設(shè)置成執(zhí)行文件的名字,使得工作進(jìn)程成為“孤兒”時(shí)執(zhí)行文件仍保持運(yùn)行狀態(tài)。
另一個(gè)與應(yīng)用程序池有關(guān)的特性是,IIS 6.0允許將應(yīng)用程序池配置成一個(gè)Web園(Web Garden)。要理解Web園的概念,可以設(shè)想這樣一種情形:假設(shè)有一個(gè)IIS 5.0服務(wù)器和三個(gè)Web網(wǎng)站,每一個(gè)Web網(wǎng)站運(yùn)行著相同的應(yīng)用程序,如果IIS 5.0能夠自動(dòng)按照?qǐng)A形循環(huán)的模式將請(qǐng)求依次發(fā)送給這些功能上等價(jià)、實(shí)際上分離的Web網(wǎng)站,將負(fù)載分離到三個(gè)不同的進(jìn)程,就可以構(gòu)成一個(gè)小型的Web農(nóng)場(Web Farm)——這就是Web園。
在IIS 6.0的Web園中,我們不必創(chuàng)建額外的Web網(wǎng)站,只要指定用于某個(gè)應(yīng)用程序池的工作進(jìn)程的數(shù)量就可以了。具體的配置步驟是:打開應(yīng)用程序池的“屬性”對(duì)話框,轉(zhuǎn)到“性能”頁,在“Web園”下面的“最大工作進(jìn)程數(shù)”輸入框中輸入進(jìn)程數(shù)量,如圖八。當(dāng)服務(wù)器的負(fù)載較小,不需要額外的工作進(jìn)程時(shí),IIS 6.0在一定的時(shí)間后(默認(rèn)20分鐘,可配置)自動(dòng)縮減實(shí)際的工作進(jìn)程數(shù)量如果負(fù)載變大,需要額外的工作進(jìn)程,IIS 6.0再次增加工作進(jìn)程數(shù)量。這一切操作都自動(dòng)進(jìn)行,不需要管理員干預(yù)。
兩個(gè)新的配置數(shù)據(jù)屬性——SMPAffinitze和SMPAffinitzeCPUMask——允許配置為工作進(jìn)程指派的特定處理器:將SMPAffinitized屬性設(shè)置成true表示應(yīng)該把分配給應(yīng)用程序池的特定工作進(jìn)程指派給特定的CPU,SMPProcessorAffinityMask屬性用來配置十六進(jìn)制的處理器掩碼,該十六進(jìn)制處理器掩碼指出應(yīng)用程序池中的工作進(jìn)程應(yīng)該綁定到哪個(gè)CPU。
Windows 2003同時(shí)支持兩種工作模式,默認(rèn)為ISS 6.0工作進(jìn)程隔離模式。工作進(jìn)程隔離模式防止一個(gè)應(yīng)用程序或站點(diǎn)停止了而影響另一個(gè)應(yīng)用程序或站點(diǎn),大大增強(qiáng)了IIS的可靠性。那么如何設(shè)置兩種工作模式呢?
啟動(dòng)IIS管理器,右擊網(wǎng)站,選擇“屬性”,打開屬性對(duì)話框。在IIS 6.0工作進(jìn)程隔離模式下,所有的應(yīng)用程序代碼都在隔離環(huán)境中運(yùn)行,它們是如何進(jìn)行隔離的呢?Windows 2003新增了應(yīng)用程序池,工作進(jìn)程隔離模式允許客戶創(chuàng)建多個(gè)應(yīng)用程序池,每個(gè)應(yīng)用程序池都可以有不同的配置。因?yàn)檫@些應(yīng)用程序池直接從內(nèi)核(而非WWW服務(wù))接收它們的請(qǐng)求,所以性能和可靠性得到了增強(qiáng)。要隔離運(yùn)行在同一臺(tái)計(jì)算機(jī)上但屬于不同網(wǎng)站的Web應(yīng)用程序,需要為每個(gè)網(wǎng)站創(chuàng)建單獨(dú)的應(yīng)用程序池。
創(chuàng)建應(yīng)用程序池
在IIS管理器中,打開本地計(jì)算機(jī),右鍵單擊“應(yīng)用程序池”,選擇新建“應(yīng)用程序池” (必須在工作進(jìn)程隔離模式下才能建立應(yīng)用程序池) ?!皯?yīng)用程序池名稱”框中,輸入新的應(yīng)用程序池名稱。如果在“應(yīng)用程序池 ID”框中出現(xiàn)的 ID (如:AppPool #1)不是您想要的,可進(jìn)行重命名。如果您單擊了“將現(xiàn)有應(yīng)用程序池作為模板”,請(qǐng)?jiān)凇皯?yīng)用程序池名稱”框中右鍵單擊想要用來作為模板的應(yīng)用程序池。最后單擊[確定]。
指派應(yīng)用程序池
在 IIS 管理器中,右鍵單擊您要為其指派應(yīng)用程序池的應(yīng)用程序,然后單擊“屬性”。 單擊“主目錄”選項(xiàng)卡,確認(rèn)您正在指派的目錄或虛擬目錄的“應(yīng)用程序名”是否已被填寫。如果“應(yīng)用程序名”框尚未被填寫,請(qǐng)單擊“創(chuàng)建”,然后輸入名稱。
在“應(yīng)用程序池”列表框中,選擇您想要為其指派的應(yīng)用程序池的名稱。最后單擊[確定]。
一起來看看有關(guān)應(yīng)用程序池的一些問題。應(yīng)用程序池的“屬性”對(duì)話框有四頁——回收,性能,運(yùn)行狀況,標(biāo)識(shí),如圖六所示。在這些選項(xiàng)頁中,最引人注目的恐怕就是“回收”頁,使用該選項(xiàng)頁可以管理工作進(jìn)程的回收。在工作進(jìn)程隔離模式中,IIS可以配置成定期重新啟動(dòng)應(yīng)用程序池中的工作進(jìn)程,從而更好地管理那些有錯(cuò)誤的工作進(jìn)程。這確保了池中的應(yīng)用程序運(yùn)行正常,并且可以恢復(fù)丟失的系統(tǒng)資源。為了回收工作進(jìn)程,失敗工作進(jìn)程接收請(qǐng)求的能力將被限制,直到它處理完存儲(chǔ)在請(qǐng)求隊(duì)列中的所有剩余請(qǐng)求。為了排出當(dāng)前請(qǐng)求,可以給予進(jìn)程配置限制。同一命名空間組的替換工作進(jìn)程在舊的工作進(jìn)程停止前啟動(dòng),從而防止服務(wù)中斷。舊的進(jìn)程完成其未決的請(qǐng)求,然后正常關(guān)閉,或者如果在達(dá)到了配置的時(shí)間限制、請(qǐng)求數(shù)、設(shè)置的時(shí)間計(jì)劃,或當(dāng)達(dá)到指定的內(nèi)存用量限制后仍沒有關(guān)閉,則明確地終止進(jìn)程。默認(rèn)情況下,應(yīng)用程序池每隔1740分鐘(29小時(shí))回收一次。
W3SVC根據(jù)“運(yùn)行狀況”頁的選項(xiàng)來判斷應(yīng)用程序池運(yùn)行是否正常,包括:每隔指定的時(shí)間Ping工作進(jìn)程,時(shí)間按秒計(jì),默認(rèn)值30秒啟動(dòng)時(shí)間限制(工作進(jìn)程必須在指定的時(shí)間內(nèi)開始)關(guān)閉時(shí)間限制(工作進(jìn)程必須在指定的時(shí)間內(nèi)關(guān)閉)是否啟動(dòng)快速失敗保護(hù)(如果在指定的時(shí)間段內(nèi)一定數(shù)目的工作進(jìn)程發(fā)生失敗,則禁用應(yīng)用程序池)。另外,ISAPI應(yīng)用程序(包括ASP.NET和asp.dll)可以聲明自己不再適合提供服務(wù),要求回收。
默認(rèn)情況下,當(dāng)IIS 6.0回收一個(gè)池時(shí),它會(huì)使用一種稱為overlapped recycle的回收技術(shù)。在這種回收模式下,失敗的工作進(jìn)程仍會(huì)保持運(yùn)行狀態(tài),同時(shí)創(chuàng)建一個(gè)新的工作進(jìn)程。IIS 6.0把新傳入的請(qǐng)求傳遞給新的工作進(jìn)程,但不拆除老的工作進(jìn)程,直至老的工作進(jìn)程處理完它隊(duì)列中的請(qǐng)求,或者遇到超時(shí)錯(cuò)誤。在此期間,TCP/IP連接不會(huì)丟失,因?yàn)橛衕ttp.sys保持著連接的有效性。當(dāng)失敗的工作進(jìn)程超時(shí)出錯(cuò)時(shí),下一個(gè)請(qǐng)求傳遞給工作進(jìn)程的請(qǐng)求是新的請(qǐng)求,因此原來保存在進(jìn)程中的會(huì)話信息就會(huì)丟失。所有這類回收操作都自動(dòng)進(jìn)行,無需管理員干預(yù),而且在大多數(shù)情況下,不會(huì)造成明顯的服務(wù)中斷現(xiàn)象。如有必要,可以將配置數(shù)據(jù)屬性LogEventOnRecycle的值設(shè)置為1,指示W(wǎng)3SVC執(zhí)行回收操作時(shí)生成一條事件日志記錄。
對(duì)于那些不能以多個(gè)實(shí)例運(yùn)行的應(yīng)用程序,overlapped recycle回收技術(shù)可能引起問題。如果遇到這類問題,可以將配置數(shù)據(jù)屬性DissallowOverlappingRotation的值設(shè)置成True(1),關(guān)閉某個(gè)應(yīng)用程序池回收操作時(shí)的進(jìn)程“重疊”現(xiàn)象。另外,對(duì)于失敗的工作進(jìn)程,有時(shí)我們可能不想將它拆除,仍舊保留該進(jìn)程,以便檢測(cè)和尋找發(fā)生問題的根源,這時(shí)可以將配置數(shù)據(jù)屬性O(shè)rphanActionExe設(shè)置成執(zhí)行文件的名字,使得工作進(jìn)程成為“孤兒”時(shí)執(zhí)行文件仍保持運(yùn)行狀態(tài)。
另一個(gè)與應(yīng)用程序池有關(guān)的特性是,IIS 6.0允許將應(yīng)用程序池配置成一個(gè)Web園(Web Garden)。要理解Web園的概念,可以設(shè)想這樣一種情形:假設(shè)有一個(gè)IIS 5.0服務(wù)器和三個(gè)Web網(wǎng)站,每一個(gè)Web網(wǎng)站運(yùn)行著相同的應(yīng)用程序,如果IIS 5.0能夠自動(dòng)按照?qǐng)A形循環(huán)的模式將請(qǐng)求依次發(fā)送給這些功能上等價(jià)、實(shí)際上分離的Web網(wǎng)站,將負(fù)載分離到三個(gè)不同的進(jìn)程,就可以構(gòu)成一個(gè)小型的Web農(nóng)場(Web Farm)——這就是Web園。
在IIS 6.0的Web園中,我們不必創(chuàng)建額外的Web網(wǎng)站,只要指定用于某個(gè)應(yīng)用程序池的工作進(jìn)程的數(shù)量就可以了。具體的配置步驟是:打開應(yīng)用程序池的“屬性”對(duì)話框,轉(zhuǎn)到“性能”頁,在“Web園”下面的“最大工作進(jìn)程數(shù)”輸入框中輸入進(jìn)程數(shù)量,如圖八。當(dāng)服務(wù)器的負(fù)載較小,不需要額外的工作進(jìn)程時(shí),IIS 6.0在一定的時(shí)間后(默認(rèn)20分鐘,可配置)自動(dòng)縮減實(shí)際的工作進(jìn)程數(shù)量如果負(fù)載變大,需要額外的工作進(jìn)程,IIS 6.0再次增加工作進(jìn)程數(shù)量。這一切操作都自動(dòng)進(jìn)行,不需要管理員干預(yù)。
兩個(gè)新的配置數(shù)據(jù)屬性——SMPAffinitze和SMPAffinitzeCPUMask——允許配置為工作進(jìn)程指派的特定處理器:將SMPAffinitized屬性設(shè)置成true表示應(yīng)該把分配給應(yīng)用程序池的特定工作進(jìn)程指派給特定的CPU,SMPProcessorAffinityMask屬性用來配置十六進(jìn)制的處理器掩碼,該十六進(jìn)制處理器掩碼指出應(yīng)用程序池中的工作進(jìn)程應(yīng)該綁定到哪個(gè)CPU。
相關(guān)文章
遠(yuǎn)程鏡像與備份SVN服務(wù)器的方法小結(jié)
此文講述SVN如何鏡像服務(wù)器,注意是單向鏡像。眾所周知,SVN有自已的鏡像命令svnsync(svn1.4以及以上版本特性),但是部署與維護(hù)確是繁瑣至極,令人望而卻步。2009-01-01開發(fā)實(shí)例:JSP中實(shí)現(xiàn)全文檢索
開發(fā)實(shí)例:JSP中實(shí)現(xiàn)全文檢索...2006-10-10IIS+PHP+MySQL+Zend Optimizer+GD庫+phpMyAdmin安裝配置[完整修正實(shí)用版]
IIS+PHP+MySQL+Zend Optimizer+GD庫+phpMyAdmin安裝配置[完整修正實(shí)用版]...2007-03-03Win+Apache+PHP+MySQL+Tcomcat配置
2008-03-03備份和恢復(fù)Windows IIS服務(wù)器設(shè)置的方法
備份和恢復(fù)Windows IIS服務(wù)器設(shè)置的方法...2007-04-04Linux Apache Web 服務(wù)器(續(xù)一)
四、配置Apache基礎(chǔ)篇,讓W(xué)WW服務(wù)器跑起來 Apache服務(wù)器軟件的配置文件主要有:“access.conf”:用于設(shè)置系統(tǒng)中的存取方式和環(huán)境;“httpd.conf”:用于設(shè)置服務(wù)器啟動(dòng)的基本環(huán)境;“srm.conf”:主要用于做文件資源上的設(shè)定;“mime.type”:記錄Apache服務(wù)器所能識(shí)別的MIME格式。2008-03-03