IIS6应用程序池配置研究

  当网站无法访问的时候,手动回收应用程序池,即可恢复,不过手动恢复的话,毕竟很麻烦,你不能一天都盯着这个网站看吧?问题出在应用程序池的话,那我们就从应用程序池的配置下手来看是否能解决问题。

1、首先建议每个网站分别建立一个应用程序池,一个应用程序池将对应不同的w3wp.exe进程,在“命令提示符”下使用iisapp命令 可以察看网站对应的w3wp.exe的pid值,方便查找出问题的进程。

   2、应用程序池的配置
      个人意见觉得在应用程序池的属性窗口中,“回收”和“运行状况”2个选项卡的配置比较重要。

2.1、回收 选项卡

    1、回收工作进程(分钟):在工作进程运行多少分钟后回收工作进程,默认启用,并且设置为1740分钟(29小时);
           2、回收工作进程(请求数目):在工作进程处理多少 个HTTP请求后终止此工作进程,默认禁用,如果启用则默认值为35000;
           3、在下列时间回收工作进程:在指定的时间回收工作进程,默认禁用;如需启用,勾选后点击添加按钮添加回收的时间即可,使用24小时制定义回收的时间;
          4、消耗太多内存时回收工作进程:
               最大虚拟内存(兆):当工作进程使用的虚拟内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为500 M;建议设置为不超过虚拟内存总数的70%;
               最大使用的内存(兆):当工作进程使用的物理内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为192 M;建议设置为不超过物理内存总数的60%;

2.2、性能

      1、在空闲此段时间后关闭工作进程(分钟):当工作进程空闲多少分钟后关闭此工作进程,这降低了空闲工作进程对系统资源和CPU性能的消耗,默认启用并且设置为20分钟; 2 \; X7 j" i# s5 k+ X

      2、核心请求队列限制为(请求次数):当 HTTP.sys接收到某个客户端发送的HTTP请求时,如果处理此请求的对应应用程序池的工作进程还处于忙状态,则HTTP.sys将接收到的请求保存 在对应应用程序池的请求队列中,直到工作进程空闲为止。此选项即用于设置此应用程序池的请求队列所能容纳的请求数量,默认情况下每个应用程序池的请求队列 限制为保留1000个请求,如果超出则向客户端返回503错误,你可以根据需要适当进行修改,最大可以设置为65535。但是如果设置太大则会消耗大量的 系统资源 ,而设置太小会导致客户端访问时频繁出现503错误。

         

2.3、运行状况

1、启用Ping:默认情况下应用程序池配置为每隔30 秒Ping工作进程,当工作进程没有进行响应时,则认为此工作进程出现故障并默认配置为关闭此工作进程。你可以修改Ping的时间间隔,但是太长的 Ping间隔可能会导致Web服务的中断,而太短的Ping间隔又会消耗更多的系统资源和CPU利用率,因此建议你保留默认配置;
        2、启用快速失败保护:如果Web应用程序代码编写有问题,它可能会导致工作进程持续出现问题。默认情况下应用程序池配置为启用快速失败保护,当工作进程在配置的时间段(默认为5分钟)内发生的失败次数超过了配置的值(默认为5次),则禁用此应用程序池。
        3、启动时间限制:IIS等待属于此应用程序池的工作进程启动的时间,当工作进程启用时间超出此设置值时,IIS会在事件日志中进行记录;
        4、关闭时间限制:当IIS检测到某个工作进程出现故障时,将此工作进程标记为关闭,此选项指定了IIS等待工作进程自动关闭的时间限制,如果超出此时间限制后工作进程尚未关闭,则IIS强行关闭工作进程。

不同的情况下有不同的设置方法,http://hezunquan.blog.163.com/blog/static/1051759200910655032475/这篇博文里给出的方法不失为一些很好的解决方案,但是对于我的服务器而言,不能解决问题,我的网站由于有一个投票系统,有人刷票,这种刷票行为是不定时不确定的,来的时候大量访问,造成当机,不刷的时候服务器没什么流量,所以它所提到的方法不是很适合我的服务器。

下面先说一下几个选项的工作原理:

应用程序池具有以下两种工作进程回收方式,不过这两种回收方式均不会造成Web服务的中断:
       默认情况下,应用程序池使用重叠回收方式。在这种方式下,当应用程序池要关闭某个工作进程时,会先创建一个工作进程,直到新的工作进程成功创建后才关闭旧的工作进程;
应用程序池也可以先关闭旧的工作进程,然后再创建新的工作进程。
如果Web 应用程序不支持多实例运行,那么你必须配置应用程序池禁止使用重叠回收方式。此配置无法在IIS管理控制台中进行修改,只能通过在 metabase.xml中修改对应应用程序池的DisallowOverlappingRotation metabase 属性为true进行。

“回收”动作将关闭之前的w3wp.exe进程,释放内存,造成客户端连接session的丢失,需要登陆的访问用户将退出当前连接重新登陆,因此我们不能频繁的进行“回收”操作,以免造成频繁登陆的麻烦;

如果没有“回收”动作,内存将得不到释放,对于占内存的网站程序而言,就会出现我前面文章中提到的w3wp.exe占用CPU达100%的问题,同时另外一个现象则是连接数过多,造成IIS服务假死,网站无法访问的情况。

因此我们在IIS的问题上应该根据实际问题进行处理,对于w3wp.exe造成CPU占用100%,我们可以在“回收”中限制第4项,而对于IIS假死经常当机则可以在1、2、3项中进行设置;

具体配置案例:

我的一个网站最近时不时的无法访问,有的时候是500内部错误,有的时候是访问半天没反应,查看服务器上的事件日志发现是提示“为应用程序池 'AppPool #1' 提供服务的进程关闭时间超过了限制”,手动“回收”该网站对应的应用程序池,恢复正常。

单独设置一个应用程序池给这个服务网站,对应用程序池进行针对我的服务器流量的特点进行设置。

一、回收

1、回收工作进程(分钟): 5分钟,对于大量刷票产生的进程及时结束;

2、回收工作进程(请求数目):(不选) 如果可以统计工作进程请求数目,可以使用,不过似乎比较难统计的。

3、在下列时间回收工作进程:我设定一个凌晨3点,其实这个时候访问少了,回收进程也没多大意义了。

4、消耗太多内存时回收工作进程:(不选)在w3we.exe占用高CPU的时候可以使用。

二、性能

   空闲超时:5分钟当“回收”中的1回收工作进程的时间设置比这个值要小的时候,将被更改为系统默认值为:回收工作进程(分钟)=60分钟, 空闲超时=60分钟

   请求队列限制:1000(默认)

   WEB园最大工作进程数为1(默认)。这个数值的更改容易造成某些网站无法访问。

三、运行状况

   启用ping:选中

   启用快速失败保护:不选。这个最容易造成IIS当机

   启动时间限制:90秒

   关闭时间限制:90秒  

http://hi.baidu.com/0wem/blog/item/c3ed892681f62f1c8a82a13e.html

posted @ 2011-07-29 20:32  Shikyoh  阅读(3209)  评论(0编辑  收藏  举报