一. IIS各版本间的区别
IIS 5.0 | IIS 5.1 | IIS 6.0 | |
---|---|---|---|
平台 | Windows 2000 | Windows XP Professional | Windows 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 上的 IIS | Windows |
二.关于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:windowssystem32目录下的一个VBS脚本,全名为iisapp.vbs,如果禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。) 3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。
Q : 另一种加载了某程序后发生w3wp.exe问题
A: 修改C:WINDOWSMicrosoft.NETFrameworkv1.1.4322CONFIGmachine.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 园对于会话信息存储在进程中的应用程序作用可能不大。在少数情况下,让多个工作进程运行同一个应用程序会造成资源竞争。例如,如果所有工作进程都试图将信息记录到日志文件中,或是使用那些不是专用于多个并发访问的资源,那么可能出现资源竞争问题。