一. IIS各版本间的区别
IIS 5.0IIS 5.1IIS 6.0
平台Windows 2000Windows XP ProfessionalWindows Server 2003 家族
体系结构32 位32 位和 64 位32 位和 64 位
应用程序进程模型TCP/IP 内核
DLLhost.exe(处于中等或高应用程序隔离模式下的多个 DLL 主机)
TCP/IP 内核
DLLhost.exe(处于中等或高应用程序隔离模式下的多个 DLL 主机)
HTTP.sys 内核
当 IIS 以 IIS 5.0 隔离模式运行时:Inetinfo.exe(对于进程内应用程序)或 DLLhost.exe(对于进程外应用程序)
当 IIS 以工作进程隔离模式运行时:W3wp.exe(多工作进程)
配置数据库配置二进制二进制XML
安全性Windows 身份验证
SSL
Kerberos
Windows 身份验证
SSL
Kerberos
安全向导
Windows 身份验证
SSL
Kerberos
安全向导
Passport 支持
远程治理HTMLA无 HTMLA
终端服务
远程治理工具 (HTML)
终端服务
群集支持IIS 群集Windows 支持Windows 支持
WWW 服务Windows 9x 上的个人 Web 治理器
Windows 2000 上的 IIS
(可选)Windows XP Professional 上的 IISWindows
 
二.关于wswp的一些知识。
Q : W3WP.EXE,应用程序,应用程序池之间的关系
A : 一个应用程序池可以包含多个应用程序,一个应用程序池创建一个W3WP.EXE进程.那么我们就不能简单的说一个进程池对应一个W3WP.EXE进程了!其实是多个应用进程池对应一个W3WP.EXE进程的.
 
Q : 如何启动和关闭W3WP.EXE这个进程
A : W3WP.EXE这个进程将在你访问www应用程序的时候启动.有人就会这么问了:"我启动了一个Web应用程序,发现系统自动创建了一个W3wp.exe进程。但我关闭这个Web应用程序后,发现这个刚创建的W3Wp.exe进程还在,请问如何关闭该进程。"这个进程不会在你关闭了这个程序以后,就马上关闭的.那是因为Http是无连接的访问,当你关闭了web网页,不会返回相应的关闭信息,所以W3WP.EXE这个进程不会因为你关闭了web应用程序尔关闭.
 
Q : 那么如何关闭这个进程呢?
A : 在应用程序池的配置中,"空闲超时"中设定合适的时间,系统默认的是20分钟.设定好指定的时间,那么在这个时间范围内没有在访问应用程序,那么系统会自动的关闭W3WP.EXE这个进程的.而不需要我们人为的干预的.也可以在Windows任务管理器里面,结束这个进程
 
Q : 如何让W3WP.EXE进程长时间的运行.
A : W3WP.EXE这个进程的默认生命是1740分钟,但依然是在这种默认的自然规律下,W3WP.EXE将在自己失业20分钟后,被系统直接枪杀.这样就可以看出,要想让W3WP.EXE长时间的生存,那我们可以通过”空闲超时”不作处理来达到我们的目的.
 
Q : 在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。
A: 解决内存占用过多,可以做以下配置
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。
解决CPU占用过多:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。
根据w3wp取得是那个一个应用程序池:
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。
 
Q : 另一种加载了某程序后发生w3wp.exe问题
A: 修改C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config,再配置节点<processModel>中有一个属性"memoryLimit",这个属性的值是一个百分比,默认为"60"(注意,是60%不是60M),即制定了ASP.NET进程能够使用所有物理内存的60%,当ASP.NET使用的内存量超过这个限额时,IIS会开始自动回收进程,即创建一个新的进程去负责应付HTTP请求,而将旧进程所占用的内存回收.
 
Q : w3wp.exe在进程中存在的原因
A : IIS 6.0版本中的w3wp.exe进程是会根据INTER信息的开放与否而决定是否存在,只要IIS提供WEB服务,该进程会始终存在,无论是否支持asp或asp.NET等类似语言脚本,w3wp.exe该进程是允许多个运行并存的,且可以通过手工设置来决定并存数量。由于多个运行并存,因而当该进程占用CPU利用率达到手工设置的饱和数值时(如70%),执行操作为"关闭"即可,不会对提供WEB服务有任何影响。
 
Q : w3wp.exe间歇性占用CPU(处理器)资源100%持高不下,持续时间几分钟至是几分钟不等,其原因?
A : ·设置在IIS中的WEB站点其程序问题,如执行大量查询操作等;
      ·WEB站点提供的系统服务相关,如提供文件上传服务从而占用过多资源等;
 
三. IIS6.0应用程序池
         IIS 6.0 提供应用程序池以支持灵活且高性能的Web 应用程序设计。应用程序池是将一个或多个应用程序连接到一组或多组工作进程的 IIS 6.0 配置选项。在CDC 情境中,将具有相似可用性和性能要求的 Web 应用程序组合到一起以形成应用程序池。这种分组可提供更高层次的资源分配精细度,对请求队列设置阀值并实现最佳的性能。将一些有严格性能要求的应用程序配置成 Web 园的一部分。通过设置处理器亲合为带有 CPU 密集型任务的应用程序分配专用处理器组,以免和其它应用程序争用 CPU 周期。
         IIS6.0不以IIS5.0隔离模式<Inetinfo.exe(对于进程内应用程序)或 DLLhost.exe(对于进程外应用程序)>工作的时候,W3wp.exe(多工作进程)将在访问www服务时候启动。
         通过IIS6.0新增的“应用程序池”可以对此进行调度,根据调换Web园的数量可以限定该池的工作进程数量,经过测试同属于一个池中的程序,服务器将在访问每个虚拟目录或站点时启动一个W3wp.exe进程。直至达到设置的Web园最大数量。根据站点的命中频率我们设置回收进程的时间,默认为20分钟,根据访问量具体定。在站点内存耗费过大时及时回收内存,可以有效的避免溢出。
 
四. 什么是Web园
         在您创建应用程序池时,就会通知 IIS 6 创建一个工作进程,以传送指派给该应用程序池的 Web 站点、文件和文件夹的内容。您可以将应用程序池配置为启动多个,而非一个工作进程,这样可以提高可扩展性。这个功能的名为 Web 园,是小型的“Web 农场”。您无需使用多台计算机来传送相同的内容(Web 农场),而是可以使用一台计算机中的多个进程来传送相同的内容。
         在将 IIS 6 应用程序配置为 Web 园时,您只需在“应用程序池属性”的“性能”选项卡的“最大工作进程数”框中,设置一个大于 1 的工作进程数。如果这个值大于 1,每个请求都将启动一个新的工作进程实例,可启动的最多进程数为您所指定的最大工作进程数。后续的请求将以循环的方式发送至工作进程。
         Web 园在您的应用程序资源有限的情况下非常有用。例如,如果您到数据库的连接很慢,那么您可以使用多个工作进程来增加用户吞吐量,从而增加到数据库的连接数。
         尽管在有些情况下使用 Web 园的用处非常大,但是要注意,每个工作进程的会话信息都是唯一的。由于请求以循环的方式路由到应用程序池工作进程,因此 Web 园对于会话信息存储在进程中的应用程序作用可能不大。在少数情况下,让多个工作进程运行同一个应用程序会造成资源竞争。例如,如果所有工作进程都试图将信息记录到日志文件中,或是使用那些不是专用于多个并发访问的资源,那么可能出现资源竞争问题。