摘要:設定應用程式集區(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時,就用回收
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |