收藏 分享(赏)

iis6-应用程序池回收及工作进程介绍.docx

上传人:cjc2202537 文档编号:174462 上传时间:2018-03-23 格式:DOCX 页数:13 大小:254.13KB
下载 相关 举报
iis6-应用程序池回收及工作进程介绍.docx_第1页
第1页 / 共13页
iis6-应用程序池回收及工作进程介绍.docx_第2页
第2页 / 共13页
iis6-应用程序池回收及工作进程介绍.docx_第3页
第3页 / 共13页
iis6-应用程序池回收及工作进程介绍.docx_第4页
第4页 / 共13页
iis6-应用程序池回收及工作进程介绍.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、IIS6.0 应用程序池回收和工作进程公司的一个网站程序长时间运行后,速度变慢,重新启动网站后速度明显变快,估计是网站程序占用的内存和 CPU 资源没能及时释放,才需要每隔一段时间重启网站释放资源。但手工重启总不能算解决问题的方法,怎样才能实现自动管理呢?IIS6.0 的应用程序池自动回收功能可以解决这一问题。 应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。为 Web 程序配置应用程序池需要以下步骤:1 )创建应用程序池,右键单击“

2、 应用程序池”,“新建/应用程序池”,命名为 KefuAppPool;2)为 Web 程序指定应用程序池,在网站虚拟目录属性“应用程序设置” 里面的 “应用程序池(N)”里选择 KefuAppPool;3)应用程序池自动回收方式的设置。回收方式有如下几种:a.根据运行时间系统默认是 1740 分钟,也就是 29 个小时,这个不是很好控制,建议不用。 b.请求数目这个要看具体的情况了。如果只有 10 个请求,可是有 5 个都在请求那个比较占资源的页面(可能是统计年度报表之类),这个时候就会出现进程当掉的情况,如果请求有 1000 个可是一个也没运行比较占资源的页面,这个时候进程肯定是很正常的,所

3、以根据请求的数目来决定也不一定符合实际需要。c.计划的时间这个其实很好,不过具体什么时间回收好呢?通常我们都是设置在凌晨两三点钟,这个时候回收是有必要的,不过针对出现随时可能出现是高内存占用并不是很适用。d.内存(虚拟内存或已使用的内存)这个针对出现内存问题引起的进程当掉实在太合适了,不过设置多大的值比较好是一个很重要的问题,值不能太小了,否则如果访问量都很大超过这个值的时候也会自动回收,这个就很没必要了。一定要多多观察进程的实际占用情况再做决定。 下面重点谈谈对工作进程回收应用程序池的理解。默认情况下,WWW 服务建立 “重叠回收”,即继续运行要终止的工作进程,直到启动新的工作进程后为止。

4、在重叠回收方案中,要回收的进程继续处理请求,同时 WWW 服务创建一个替代工作进程。在停止旧工作进程之前启动新的工作进程,然后将请求定向到新的进程。此设计可以防止服务中断,因为旧进程关闭前仍然保持与 HTTP.sys 的通信以处理请求。因为可重叠关闭或启动的关闭超时值是可以配置的,所以在工作进程仍在处理请求的同时可以终止该进程(如果它在时间限制内没有处理完请求的话)。注意:当 WWW 服务回收某个工作进程时,它并不断开现有的 TCP/IP 连接。HTTP 协议堆栈 (HTTP.sys) 建立并维护 TCP/IP 连接。IIS 中的每个应用程序池由一个“ 工作进程”进行管理,也就是“W3wp.e

5、xe“ 进程。如果有多个应用程序池中的程序运行,我们就能看到多个 w3wp.exe。这点可以在任务管理器中看到,如下图所示,任务管理器中有两个 w3wp.exe 进程,恰好对应两个有应用程序在运行的应用程序池。在命令提示符下运行 iisapp -a,可以查看 w3wp.exe 和哪个应用程序池关联。下图显示了手动执行应用程序池 KefuAppPool 的回收,在回收前,回收中和回收后应用程序池和工作进程情况。我们注意到:回收过程中增加了一个工作进程(PID=3896),该工作进程(PID=3896)启动好后,旧的工作进程(PID=5716)才被停止,新工作进程(PID=3896)正式替代旧进程

6、工作,这就很好的防止了应用程序池回收过程中服务被中断,保证了程序的连续运行。而其他两个应用程序池对应的工作进程 PID 都没用变。该图很好的展示了应用程序池回收的过程。应用程序池这个东西着实让管理服务器的人头疼,如果不设置好网站随时有可能罢工,甚至拖累服务器。因此特地找来此文章供大家参考。另外说一点,如果网站访问量不是很大,晚上没什么人访问,可以尝试凌晨重启服务器,这样可以提高服务器的速度,为第二天的访问做准备。IIS 6 的核心在于工作进程隔离模式,而应用程序池则是定义工作进程如何进行工作,因此,可以说应用程序池是整个 IIS 6 的核心。 和 IIS 5 中只能使用单个应用程序池不同,工作

7、在工作进程隔离模式的 IIS 6 可以创建多个应用程序池,不同的应用程序池之间是完全隔离的,某个应用程序池停止服务时不会影响到其他应用程序池。 在使用应用程序池之前,你应该确定你所需要的应用程序池数量。可能有很多朋友会认为,既然不同的应用程序池之间是完全隔离的,那么我只需要为每个 Web 站点创建一个应用程序池就可以了。这个办法在 IIS 服务器上具有较少的 Web 站点数量时可以使用,但是如果 IIS 服务器上具有很多 Web 站点数量,那么这个办法就不适用了,因为不同的应用程序池在被访问时都会创建各自的工作进程,当大量的工作进程并发工作时会消耗大量的系统资源和 CPU 利用率,反而会降低服

8、务器性能。你应该根据 Web 站点的重要性、隔离性、所运行代码的安全性和稳定性等来对 IIS 服务器上所具有的 Web 站点进行划分,然后根据情况来决定所需要的应用程序池数量。对于那些非常重要的 Web 站点、需要单独隔离的 Web 站点、所运行代码稳定性和安全性并不可靠的 Web 站点配置为使用各自独立的应用程序池,而将其他普通的 Web 站点配置为使用一个公共的应用程序池。 默认情况下,在安装 IIS 时会创建一个默认网站并创建一个名为 DefaultAppPool 的应用程序池为其使用;默认配置下的应用程序池已经可以很好的进行工作,建议你只有在特别需要时才对应用程序池进行配置。 配置应用

9、程序池属性 在 IIS 管理控制台中展开应用程序池文件夹,然后右击对应的应用程序池,点击属性,你可以在应用程序池的属性中进行以下配置: 回收在回收标签,你可以设置工作进程的回收方式: 回收工作进程(分钟):在工作进程运行多少分钟后回收工作进程,默认启用,并且设置为 1740分钟(29 小时); 回收工作进程(请求数目):在工作进程处理多少 个 HTTP 请求后终止此工作进程,默认禁用,如果启用则默认值为 35000; 在下列时间回收工作进程:在指定的时间回收工作进程,默认禁用;如需启用,勾选后点击添加按钮添加回收的时间即可,使用 24 小时制定义回收的时间; 消耗太多内存时回收工作进程: 最大

10、虚拟内存(兆):当工作进程使用的虚拟内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为 500 M;建议设置为不超过虚拟内存总数的 70; 最大使用的内存(兆):当工作进程使用的物理内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为 192 M;建议设置为不超过物理内存总数的 60; 另外需要注意的是,应用程序池具有以下两种工作进程回收方式,不过这两种回收方式均不会造成Web 服务的中断: 默认情况下,应用程序池使用重叠回收方式。在这种方式下,当应用程序池要关闭某个工作进程时,会先创建一个工作进程,直到新的工作进程成功创建后才关闭旧的工作进程; 应用程序池也可以先关闭旧的工

11、作进程,然后再创建新的工作进程。 如果 Web 应用程序不支持多实例运行,那么你必须配置应用程序池禁止使用重叠回收方式。此配置无法在 IIS 管理控制台中进行修改,只能通过在 metabase.xml 中修改对应应用程序池的DisallowOverlappingRotation metabase 属性为 true 进行。 性能在性能标签你可以设置工作进程的运行方式: 在空闲此段时间后关闭工作进程(分钟):当工作进程空闲多少分钟后关闭此工作进程,这降低了空闲工作进程对系统资源和 CPU 性能的消耗,默认启用并且设置为 20 分钟; 核心请求队列限制为(请求次数):当 HTTP.sys 接收到某个

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

13、,那么可以通过配置此选项来限制此应用程序池; 最大 CPU 使用率(百分比):所设置的应用程序池所能使用的最大 CPU 使用率;启用 CPU 监视时默认值为 100; 刷新 CPU 使用率(分钟):刷新 CPU 使用率的间隔时间;启用 CPU 监视时默认值为 5; CPU 使用率超过最大使用率时执行的操作:当此应用程序池的 CPU 使用率超过所设置的最大 CPU使用率时所进行的操作,启用 CPU 监视时默认为无,此时 IIS 只是在事件日志中进行记录而不进行其他操作;如果选择为关闭,那么 IIS 将关闭此应用程序池中的所有工作进程; Web 园:在 Web 园中你可以配置此应用程序池所使用的最

14、大工作进程数,默认为 1,最大可以设置为 4000000; 配置使用多个工作进程可以提高该应用程序池处理请求的性能,但是在设置为使用多个工作进程之前,请考虑以下两点: 每一个工作进程都会消耗系统资源和 CPU 占用率;太多的工作进程会导致系统资源和 CPU 利用率的急剧消耗; 每一个工作进程都具有自己的状态数据,如果 Web 应用程序依赖于工作进程保存状态数据,那么可能不支持使用多个工作进程。 运行状况在运行状况标签你可以配置应用程序池监视工作进程的运行状况, 启用 Ping:默认情况下应用程序池配置为每隔 30 秒 Ping 工作进程,当工作进程没有进行响应时,则认为此工作进程出现故障并默认

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

16、当 IIS 检测到某个工作进程出现故障时,将此工作进程标记为关闭,此选项指定了IIS 等待工作进程自动关闭的时间限制,如果超出此时间限制后工作进程尚未关闭,则 IIS 强行关闭工作进程。 标识在标识标签,你可以配置工作进程所运行的用户账户。在 IIS 5 或者当 IIS 6 运行在 IIS 5 隔离模式时,工作进程运行在本地系统账户,而运行在工作进程隔离模式下的 IIS 6 的工作进程运行在网络服务账户下,这降低了系统被攻击的可能性。 你可以配置工作进程运行在预定义的本地系统、本地服务或网络服务账户下,也可以配置为使用某个自定义的用户账户。建议使用默认的网络服务账户;不过如果为了更高的安全性,

17、可以配置使用自定义的用户账户,不过建议你只是将此自定义用户加入到 IIS_WPG 用户组中,因此 IIS_WPG 用户组包含了可以启动和运行工作进程的最小权限。1)在任务管理器中增加显示 pid 字段;2)在命令提示符下运行 iisapp -a。注意,第一次运行,会提示没有 js 支持,点击确定。然后再次运行就可以了。这样就可以看到 pid 对应的应用程序池。如上图左侧所示,应用程序池 KefuAppPool 和 PID=3232 的 w3wp.exe 相关联,应用程序池 ReportServer 和 PID=3572 的w3wp.exe 相关联 .IIS6 指定回收应用程序池 设置回收应用程

18、序池设置是在应用程序池的属性对话框的“回收”选项卡中指定的。设置回收应用程序池设置1. 打开IIS 管理控制台,单击加号展开本地计算机。2. 单击加号展开 “应用程序池”文件夹。3. 右击适当的应用程序池,然后单击“属性”。出现应用程序池的属性对话框。4. 单击“回收” 选项卡,然后设置适当的应用程序池设置。5. 应用程序池“属性 ”对话框的“回收 ”选项卡应用程序池“属性”对话框的“ 回收”选项卡内存回收“内存回收” 是等效于memoryLimit ASP.NET 进程模型设置的应用程序池设置。它指定辅助进程可以使用的最大内存量。如果辅助进程超出了这一数量,将创建新的进程来替换它,并且当前所

19、有请求都被重新分配给该新进程。在memoryLimit ASP.NET 进程模型设置与“内存回收 ”应用程序池设置之间有两个重要的区别:memoryLimit ASP.NET 进程模型设置只使用物理内存。“内存回收 ”应用程序池设置允许您为物理内存和虚拟内存分别指定限制。由于公共语言运行库的垃圾回收器工作的方式,物理内存(或物理内存和虚拟内存的组合)常用于ASP.NET 应用程序。虚拟内存常用于将堆划分为多个片断的传统本机应用程序。“内存回收” 应用程序池设置是按兆字节(MB) 指定的,而不是按相对于总内存的百分比指定的。回收辅助进程“回收辅助进程” 是等效于requestLimit ASP.

20、NET 进程模型设置的应用程序池设置。它指定导致辅助进程或应用程序池被回收的请求的数目。默认情况下“回收辅助进程”是禁用的。若要启用“回收辅助进程”,请选取该复选框并在数值调节框中指定请求数。回收多个辅助进程“回收多个辅助进程”是等效于 timeout ASP.NET 进程模型设置的应用程序池设置。它指定回收辅助进程或应用程序池的时间间隔。默认情况下“回收多个辅助进程”是启用的而且设置为120 分钟。通过更改数值调节框中的值,可以指定一个不同的时间间隔。若要禁用“回收多个辅助进程”,请清除该复选框。性能应用程序池设置通过性能应用程序池设置,可以控制辅助进程的操作。以下几节描述如何指定性能应用程

21、序池设置。指定性能应_ 用程序池设置性能应用程序池设置是在应用程序池的属性对话框的“性能”选项卡中指定的。设置性能应用程序池设置1. 打开IIS 管理控制台,单击加号展开本地计算机。2. 单击加号展开 “应用程序池”文件夹。3. 右击适当的应用程序池,然后单击“属性”。出现应用程序池的属性对话框。4. 单击“性能” 选项卡,然后设置适当的应用程序池设置。应用程序池“属性”对话框的“ 性能”选项卡网络园“网络园”是等效于webGarden 和cpuMask ASP.NET 进程模型设置的应用程序池设置。若要启用“网络园”,请将“辅助进程的最大数目”设置为高于1 的值。该值还为应用程序池确定最大进

22、程数。因为网络园支持使用多个进程,所以,每一进程在应用程序状态、进程内会话状态、缓存和静态数据方面都有其自己的副本。网络园不应用于所有应用程序,尤其在这些应用程序需要维护状态的情况下。在决定网络园模式是否适用前,一定要检查应用程序的性能。在使用网络园时,理解会话状态和循环工作的方式是十分重要的。考虑其他应用程序池设置影响应用程序的方式也是十分重要的。使用辅助进程隔离模式的网络园中的会话状态在使用会话状态时,请注意,辅助进程隔离模式不支持将请求传送回引起请求返回的进程。当一个应用程序运行在处于ASP 会话状态或应用程序状态的网络园中时,该应用程序需要将其请求发送回发起的进程。在使用IIS 6.0

23、 应用程序池时,要确保应用程序让一个连接总保持为打开状态,以便其请求被发送回适当的进程。如果此连接没有保持为打开状态,则请求将被发送到为网络园提供服务的下一可用的辅助进程。使用辅助进程隔离模式的网络园中的循环循环是一种用于应用程序的负载平衡方法。在每个请求到达时,它会自动被发送到下一可用进程。例如,如果网络园具有4 个进程,则请求被发送到进程 0、1、2 和 3,并依照这一顺序发送。然后为其他请求重复该循环。使用辅助进程隔离模式的网络园中的应用程序池参数应用程序池设置 行为AppPoolQueueLength此参数的值不受影响。但是,请求是通过在所有为网络园提供服务的辅助进程上循环而分发的。DisallowOverlappingRotation 网络园中没有行为更改。DisallowRotationOnConfigChange 网络园中没有行为更改。IdleTimeout为每一进程独立计算,这样各进程的超时可以彼此独立。根据所选择的路由算法,将自动配置要加载的进程的数目。LoadBalancerCapabilities 网络园中没有行为更改。OrphanAction 网络园中没有行为更改。OrphanWorkerProcess 网络园中没有行为更改。PeriodicRestartTime此参数的含义在网络园中发生了变化。在网络园中,此参数指定回收所有进程的时间间隔。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报