广告载入中...
IIS 6.0 提出应用程序池这个概念,以支持高性能的 Web 应用程序设计。应用程序池将一个或多个应用程序连接(可以理解为IIS站点)到一组或多组工作进程中。这种分组可提供更高层次的资源分配精细度,对请求队列设置阀值并实现最佳的性能。
当站点内存耗费过大时及时回收内存,可以有效的避免溢出。并且默认会在20分钟回收一次,来保证内存的有效释放。
IIS站点采用独立应用程序池的优势体现在哪里呢?
每一个站点分配一个应用程序池,在站点启动以后会在系统中创建一个独立的进程(w3wp.exe),这样即使一个站点因为某些原因“挂了”,而其他站点丝毫不受影响。
我们经常会看到网站访问时出现:”Service Unavailable”,这个一般就是由于网站空间所在的应用程序池发生错误或者进行回收造成的。对于网站空间使用者来说,需要联系你的空间提供商来查看问题所在。
如果是每个站点使用独立应用程序池,那么在一个站点出现问题时,其他站点将丝毫不受影响。
当然使用这种方法也是要付出代价的,因为他增加了额外的服务器开销,需要分配更多的内存,更多的CPU使用率。对于高配置高性能的服务器来说,使用独立应用程序池应该是保证网站空间高速运行的最佳选择。因为高配置的服务器不用担心资源不够用,而要考虑的则是如何让用户更充分的利用服务器的强劲性能。
经过最近几年我对2003的服务器配置,始终觉得IIS的CPU限制做得很差,虽然可以做到独立站点应用程序池,但是限制还是很有限的。
要限制一个站点的CPU使用,必须将该站点独立应用程序池,共用应用程序池是无法限制单个站点的。
IIS独立应用程序池,就需要独立的进程,非常消耗内存。独立池越多,就有越多的W3WP进程。
对于每个站点均要独立应用程序池的服务器,在我平时使用的P4 3.0G 2G的普通服务器上,建议不要超过50个站点,最好30以内,不然服务器压力非常大。
在配置上,我一般把资源消耗较大的网站独立一个池,一般普通BBS或者生成HTML的系统大概5个站一个池。普通网站以及一些企业站点均共用一个池。
关于设置应用程序池刷新CPU时间:
操作:
在启用cpu监视后,设置最大的cpu使用量,比如20%。
设置刷新cpu时间,如1分钟。
设置操作为“关闭”。
说明:
这个意思是,IIS刷新检测该独立池的CPU使用情况时间为1分钟,如果超过设置的cpu限制20%,就会发出关闭池的指令,要求池在指定的时间内关闭。
如果池成功在这个时间内关闭,IIS会重启动一个新池,此间时间很短,一般不会有什么感觉,池就新开启了,对于访问网站的人基本是不会有感觉的。
但如果池没有在指定时间内关闭,IIS就会强行关闭它一个刷新CPU时间。在这个停止的时间内,网站无法访问,提示“Service Unavaliable”。
关于设置限制某些大论坛内存占用:
对IIS中某站内存占用限制,也可以按照限制CPU的方法。对应用程序池限制最大虚拟内存,就可以了。超过了设置的最大虚拟内存,该池会就被回收。
根据我的经验,在服务器硬件允许的情况下,一般不要限制站点内存使用,这样能够保证网站运行,不会出现用户掉线情况。需要限制某站的最大虚拟内存不要小于64M,不然可能出现一些未知的错误。