说明一下AppPool的概念
IIS6.0之后,有AppPool的概念
默认的Web应用程序,会使用DefaultAppPool

每个不同的AppPoolServer上运作的时候
会使用不同的内存区块,产生各自的实例
并且运作在不同的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 ServerIIS6为范例,2008Vista使用精神差不多,但是设定的画面不太一样)

开启IIS,在应用程序集区右键新增应用程序集区

 

小喵习惯用现存的来改,这样原本现存的一些设定可以复制过来

 

建立好AppPool后,接着设定应用程序指定刚刚的AppPool

 

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

 

posted on 2008-06-08 11:48  topcat  阅读(428)  评论(0)    收藏  举报