設定應用程式集區(AppPool)防止Server上的Web應用程式彼此干擾

摘要:設定應用程式集區(AppPool)防止Server上的Web應用程式彼此干擾

說明一下AppPool的概念
IIS6.0之後,有AppPool的概念
預設的Web應用程式,會使用DefaultAppPool

每個不同的AppPool在Server上運作的時候
會使用不同的記憶體區塊,產生各自的執行個體
並且運作在不同的Session中

預設都會在DefaultAppPool這個區塊裡面運作
當AppPool停止,或者回收的時候
使用這個AppPool的所有Web應用程式都會同時的被停止、或者回收(ASPX裡面的Session會被清空)
而當相同的AppPool裡面,如果有某個Web應用程式有問題時(例如發生無窮迴圈)
相同的AppPool裡面的也都會因為執行在同一個Session中
造成其他在這個AppPool的程式也受到影響(例如瀏覽速度變慢,甚至同時當掉)

在使用上,如果在同一台Server上要運作不同的.NET Framework
那麼就一定需要讓不同的Framework運作在不同的AppPool裡面

至於使用相同的.NET Framework版本的狀況下
就可以依照Server的狀況來設定
如果每個不同的Web應用程式都設定一個專屬的AppPool
這樣做當然可以,不過相對的必須使用較多的Server資源
但是這麼做卻可以讓不同的Web應用程式變得比較獨立
不會受到其他Web應用程式的不良影響
(
例如要解決Web App1的問題,把DefaultAppPool停掉
→結果造成所有DefaultAppPool的程式全部重新啟動
但是如果是獨立的WebApp1Pool的話,停掉WebApp1Pool只會讓有問題的Web App1重新啟動
其他的Web App不會有影響
)

所以...小喵的建議...
如果您的Sever記憶體夠大的話...
不妨讓每個WebApp有自己的AppPool

^_^

 


 

 接著就來看一下怎麼設定應用程式集區AppPool
(以Windows 2003 Server的IIS6為範例,2008、Vista使用精神差不多,但是設定的畫面不太一樣)

開啟IIS,在應用程式集區右鍵→新增 →應用程式集區

 

小喵習慣用現存的來改,這樣原本現存的一些設定可以複製過來

 

建立好AppPool後,接著設定應用程式指定剛剛的AppPool

 

當有WebApp當掉時,就可以用停止,當抓不到新的class時,就用回收

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat