IIS6.0应用程序池的性能优化和设置技巧分享第1/2页_win服务器

IIS6.0应用程序池回收和工作进程

公司的一个网站程序长时间运行后,速度变慢,重新启动网站后速度明显变快,估计是网站程序占用的内存和CPU资源没能及时释放,才需要每隔一段时间重启网站释放资源。但手工重启总不能算解决问题的方法,怎样才能实现自动管理呢?IIS6.0的应用程序池自动回收功能可以解决这一问题。

应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。

为Web程序配置应用程序池需要以下步骤:1)创建应用程序池,右键单击“应用程序池”,“新建/应用程序池”,命名为KefuAppPool;2)为Web程序指定应用程序池,在网站虚拟目录属性“应用程序设置”里面的“应用程序池(N)”里选择KefuAppPool;3)应用程序池自动回收方式的设置。回收方式有如下几种:

a.根据运行时间

系统默认是1740分钟,也就是29个小时,这个不是很好控制,建议不用。

b.请求数目

这个要看具体的情况了。如果只有10个请求,可是有5个都在请求那个比较占资源的页面(可能是统计年度报表之类),这个时候就会出现进程当掉的情况,如果请求有1000个可是一个也没运行比较占资源的页面,这个时候进程肯定是很正常的,所以根据请求的数目来决定也不一定符合实际需要。

c.计划的时间

这个其实很好,不过具体什么时间回收好呢?通常我们都是设置在凌晨两三点钟,这个时候回收是有必要的,不过针对出现随时可能出现是高内存占用并不是很适用。

d.内存(虚拟内存或已使用的内存)

这个针对出现内存问题引起的进程当掉实在太合适了,不过设置多大的值比较好是一个很重要的问题,值不能太小了,否则如果访问量都很大超过这个值的时候也会自动回收,这个就很没必要了。一定要多多观察进程的实际占用情况再做决定。

下面重点谈谈对工作进程回收应用程序池的理解。

默认情况下,WWW服务建立“重叠回收”,即继续运行要终止的工作进程,直到启动新的工作进程后为止。 在重叠回收方案中,要回收的进程继续处理请求,同时 WWW 服务创建一个替代工作进程。在停止旧工作进程之前启动新的工作进程,然后将请求定向到新的进程。此设计可以防止服务中断,因为旧进程关闭前仍然保持与 HTTP.sys 的通信以处理请求。因为可重叠关闭或启动的关闭超时值是可以配置的,所以在工作进程仍在处理请求的同时可以终止该进程(如果它在时间限制内没有处理完请求的话)。

注意:当 WWW 服务回收某个工作进程时,它并不断开现有的 TCP/IP 连接。HTTP 协议堆栈 (HTTP.sys) 建立并维护 TCP/IP 连接。

IIS中的每个应用程序池由一个“工作进程”进行管理,也就是"W3wp.exe" 进程。如果有多个应用程序池中的程序运行,我们就能看到多个w3wp.exe。这点可以在任务管理器中看到,如下图所示,任务管理器中有两个w3wp.exe进程,恰好对应两个有应用程序在运行的应用程序池。

在命令提示符下运行iisapp -a,可以查看w3wp.exe和哪个应用程序池关联。

下图显示了手动执行应用程序池KefuAppPool的回收,在回收前,回收中和回收后应用程序池和工作进程情况。我们注意到:回收过程中增加了一个工作进程(PID=3896),该工作进程(PID=3896)启动好后,旧的工作进程(PID=5716)才被停止,新工作进程(PID=3896)正式替代旧进程工作,这就很好的防止了应用程序池回收过程中服务被中断,保证了程序的连续运行。而其他两个应用程序池对应的工作进程 PID都没用变。该图很好的展示了应用程序池回收的过程。



应用程序池这个东西着实让管理服务器的人头疼,如果不设置好网站随时有可能罢工,甚至拖累服务器。因此特地找来此文章供大家参考。

另外说一点,如果网站访问量不是很大,晚上没什么人访问,可以尝试凌晨重启服务器,这样可以提高服务器的速度,为第二天的访问做准备。

IIS 6的核心在于工作进程隔离模式,而应用程序池则是定义工作进程如何进行工作,因此,可以说应用程序池是整个IIS 6的核心。

和IIS 5中只能使用单个应用程序池不同,工作在工作进程隔离模式的IIS 6可以创建多个应用程序池,不同的应用程序池之间是完全隔离的,某个应用程序池停止服务时不会影响到其他应用程序池。

在使用应用程序池之前,你应该确定你所需要的应用程序池数量。可能有很多朋友会认为,既然不同的应用程序池之间是完全隔离的,那么我只需要为每个Web站点创建一个应用程序池就可以了。这个办法在IIS服务器上具有较少的Web站点数量时可以使用,但是如果IIS服务器上具有很多Web站点数量,那么这个办法就不适用了,因为不同的应用程序池在被访问时都会创建各自的工作进程,当大量的工作进程并发工作时会消耗大量的系统资源和CPU利用率,反而会降低服务器性能。你应该根据Web站点的重要性、隔离性、所运行代码的安全性和稳定性等来对IIS服务器上所具有的Web站点进行划分,然后根据情况来决定所需要的应用程序池数量。对于那些非常重要的Web站点、需要单独隔离的Web站点、所运行代码稳定性和安全性并不可靠的Web站点配置为使用各自独立的应用程序池,而将其他普通的Web站点配置为使用一个公共的应用程序池。

默认情况下,在安装IIS时会创建一个默认网站并创建一个名为DefaultAppPool的应用程序池为其使用;默认配置下的应用程序池已经可以很好的进行工作,建议你只有在特别需要时才对应用程序池进行配置。

配置应用程序池属性

在IIS管理控制台中展开应用程序池文件夹,然后右击对应的应用程序池,点击属性,你可以在应用程序池的属性中进行以下配置:

回收

在回收标签,你可以设置工作进程的回收方式:



回收工作进程(分钟):在工作进程运行多少分钟后回收工作进程,默认启用,并且设置为1740分钟(29小时);

回收工作进程(请求数目):在工作进程处理多少 个HTTP请求后终止此工作进程,默认禁用,如果启用则默认值为35000;

在下列时间回收工作进程:在指定的时间回收工作进程,默认禁用;如需启用,勾选后点击添加按钮添加回收的时间即可,使用24小时制定义回收的时间;

消耗太多内存时回收工作进程:

最大虚拟内存(兆):当工作进程使用的虚拟内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为500 M;建议设置为不超过虚拟内存总数的70%;

最大使用的内存(兆):当工作进程使用的物理内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为192 M;建议设置为不超过物理内存总数的60%;

另外需要注意的是,应用程序池具有以下两种工作进程回收方式,不过这两种回收方式均不会造成Web服务的中断:

默认情况下,应用程序池使用重叠回收方式。在这种方式下,当应用程序池要关闭某个工作进程时,会先创建一个工作进程,直到新的工作进程成功创建后才关闭旧的工作进程;

应用程序池也可以先关闭旧的工作进程,然后再创建新的工作进程。

如果Web 应用程序不支持多实例运行,那么你必须配置应用程序池禁止使用重叠回收方式。此配置无法在IIS管理控制台中进行修改,只能通过在 metabase.xml中修改对应应用程序池的DisallowOverlappingRotation metabase属性为true进行。

当前1/2页 12下一页阅读全文

时间: 2024-11-03 22:18:57

IIS6.0应用程序池的性能优化和设置技巧分享第1/2页_win服务器的相关文章

Browser Diet:网页前端性能优化的各种技巧和工具

文章描述:如何给网站瘦身?图文并茂的前端性能优化指南. 提高网站的速度对网站的成功有巨大的影响,因为网站的加载速度直接影响到用户体验和搜索引擎排名.Browser Diet 是一个非常好的指南,列出了前端性能优化的各种技巧和工具. 这是一个由 HTML,CSS,JS,服务器,图像和网站相关领域的众多专家组成的团队编写的,相比网络上的其它内容,这个指南图文并茂,生动有趣.此外,该指南不仅列出性能优化的步骤,同时还详细的介绍了如何实现. 官方主页 GitHub

用asp.net来回收IIS6.0应用程序池

网站由于使用比较多的缓存,有时会出现缓存错误,导致程序异常,这个时候需要回收一个应用程序池就可以了. 以前每次都是通过远程桌面连接到服务器,然后在应用程序池上右击>回收,感觉比较麻烦,于时找了如下的一个办法来实现. 其实就是普通的一个asp.net页面,加上一个按钮,进行回收,主要程序如下:  复制  保存 protected void StartStopRecycleApp(string method) { string AppPoolName = this.tbAppName.Text.Tr

解析MySQL数据库性能优化的六大技巧_Mysql

数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员,你很有可能已经在某个阶段遇到上述情况.因此,本文将介绍对MySQL进行性能优化的技巧和窍门. 1.存储引擎的选择如果数据表需要事务处理,应该考虑使用InnoDB,因为它完全符合ACID特性.如果不需要事务处理,使用默认存储引擎MyISAM是比较明智的.并且不要尝试同时使用这两个存储引擎.思考一下:在一个事务处理中,一些数据表使用Inno

JavaScript 性能优化小结_javascript技巧

随着 Web2.0 技术的不断推广,越来越多的应用使用 JavaScript 技术在客户端进行处理,从而使 JavaScript 在浏览器中的性能成为开发者所面临的最重要的可用性问题.而这个问题又因 JavaScript 的阻塞特性变的复杂,也就是说当浏览器在执行 JavaScript 代码时,不能同时做其他任何事情.本文详细介绍了如何正确的加载和执行 JavaScript 代码,从而提高其在浏览器中的性能. 在J2EE编程中,我们接触最多的脚本语言还是JavaScript.在使用JavaScr

挖掘IIS6.0管理网站的新招_安全设置

尽管IIS6.0的推出已有一些时日,相信许多网民使用它管理各类网站已经烂熟于心,不过IIS6.0就像Windows操作系统一样深不见底,要是用力挖掘的话,还是能发现很多新应用技巧的,或许下面提供的几则管理网站的新技巧你并不熟悉. 尽管IIS6.0的推出已有一些时日,相信许多网民使用它管理各类网站已经烂熟于心,不过IIS6.0就像Windows操作系统一样深不见底,要是用力挖掘的话,还是能发现很多新应用技巧的,或许下面提供的几则管理网站的新技巧你并不熟悉. 1.阻止网站耗费太多内存资源 使用IIS

asp.net小谈网站性能优化_实用技巧

当然,网站性能优化是多方面的,这里先谈一下这些天来的所获: 1.书写代码的习惯: 再复杂的逻辑,也是从最简单的开始.在书写代码的过程中,很多不好的规范都会影响网站的性能: 以下是整理出来的些许代码习惯: 1)字符串的比较 用 string.Empty 代替 " " 2)在遍历过程中,先定义好计数变量, 再遍历, 这样会减少每次遍历就分配一次内存空间: 复制代码 代码如下: int i; for( i=0; i<100;i++) { // codeing } 3)同样的,用 Str

MySQL的性能优化和使用技巧

本文是笔者从工作中总结而出.由于时间问题和考虑的不可能足够全面,所以本文会很长时间才会完成,下面会陆续给出内容,与大家分享^_^ 在windows下,配置文件为%mysql_home%/my.ini 在linux下,配制文件为/etc/my.cnf 一 性能优化 1--------INNODB_BUFFER_POOL_SIZE 该参数是innodb引擎的最主要的性能参数,对数据库的性能起了决定性作用.说白了就是数据库的使用内存. 2--------性能分析, show status like '

IIS6设置网站经常遇到的问题总结_win服务器

很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验,做出了这个总结,希望能给大家帮上忙. 问题1:未启用父路径 症状举例: Server.MapPath() 错误 'ASP 0175 : 80004005' 不允许的 Path 字符 /0709/dqyllhsub/news/OpenDatabase.asp,行 4 在 MapPath 的 Path 参数中不允许字符 '..'. 原因分析: 许多Web页面里

iis 创建应用程序池的方法与分析第1/3页_win服务器

当 IIS 6.0 在工作进程隔离模式下运行时,可将 Web 应用程序组合到应用程序池中.应用程序池允许将特定配置设置应用于多个应用程序组,并允许工作进程为这些应用程序提供服务.可向应用程序池指定任何 Web 目录或虚拟目录. 通过创建新应用程序池并向它们指定网站和 Web 应用程序,可提高服务器的效率和可靠性,并使其他应用程序即使在新应用程序池终止时也总是可用. 要点 您必须是本地计算机上 Administrators 组的成员或者必须被委派了相应的权限,才能执行下列步骤.作为安全性的最佳*作