什么是应用程序池呢.docx

上传人:b****4 文档编号:4029793 上传时间:2022-11-27 格式:DOCX 页数:11 大小:735.73KB
下载 相关 举报
什么是应用程序池呢.docx_第1页
第1页 / 共11页
什么是应用程序池呢.docx_第2页
第2页 / 共11页
什么是应用程序池呢.docx_第3页
第3页 / 共11页
什么是应用程序池呢.docx_第4页
第4页 / 共11页
什么是应用程序池呢.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

什么是应用程序池呢.docx

《什么是应用程序池呢.docx》由会员分享,可在线阅读,更多相关《什么是应用程序池呢.docx(11页珍藏版)》请在冰豆网上搜索。

什么是应用程序池呢.docx

什么是应用程序池呢

什么是应用程序池呢?

这是微软的一个全新概念:

应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。

因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用

程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。

 

          Windows 2003同时支持两种工作模式,默认为ISS 6.0工作进程隔离模式。

工作进程隔离模式防止一个应用程序或站点停止了而影响另一个应用程序或站点,大大增强了IIS的可靠性。

那么如何设置两种工作模式呢?

 

          启动IIS管理器,右击网站,选择“属性”,打开属性对话框(图1)。

 

 

在IIS 6.0工作进程隔离模式下,所有的应用程序代码都在隔离环境中运行,它们是如何进行隔离的呢?

Windows 2003新增了应用程序池,工作进程隔离模式允许客户创建多个应用程序池,每个应用程序池都可以有不同的配置。

因为这些应用程序池直接从内核(而非WWW 服务)接收它们的请求,所以性能和可靠性得到了增强。

要隔离运行在同一台计算机上但属于不同网站的Web应用程序,需要为每个网站创建单独的应用程序池。

          创建应用程序池 

         在IIS管理器中,打开本地计算机,右键单击“应用程序池”,选择新建“应用程序池” (必须在工作进程隔离模式下才能建立应用程序池) 。

“应用程序池名称”框中,输入新的应用程序池名称。

如果在“应用程序池 ID”框中出现的 ID (如:

AppPool #1)不是您想要的,可进行重命名。

如果您单击了“将现有应用程序池作为模板”,请在“应用程序池名称”框中右键单击想要用来作为模板的应用程序池。

最后单击[确定]。

  

        

指派应用程序池 

在 IIS 管理器中,右键单击您要为其指派应用程序池的应用程序,然后单击“属性”。

 单击“主目录”选项卡,确认您正在指派的目录或虚拟目录的“应用程序名”是否已被填写。

如果“应用程序名”框尚未被填写,请单击“创建”,然后输入名称。

 

在“应用程序池”列表框中,选择您想要为其指派的应用程序池的名称。

最后单击[确定]。

 

  一起来看看有关应用程序池的一些问题。

应用程序池的“属性”对话框有四页——回收,性能,运行状况,标识,如图六所示。

在这些选项页中,最引人注目的恐怕就是“回收”页,使用该选项页可以管理工作进程的回收。

在工作进程隔离模式中,IIS可以配置成定期重新启动应用程序池中的工作进程,从而更好地管理那些有错误的工作进程。

这确保了池中的应用程序运行正常,并且可以恢复丢失的系统资源。

为了回收工作进程,失败工作进程接收请求的能力将被限制,直到它处理完存储在请求队列中的所有剩余请求。

为了排出当前请求,可以给予进程配置限制。

同一命名空间组的替换工作进程在旧的工作进程停止前启动,从而防止服务中断。

旧的进程完成其未决的请求,然后正常关闭,或者如果在达到了配置的时间限制、请求数、设置的时间计划,或当达到指定的内存用量限制后仍没有关闭,则明确地终止进程。

默认情况下,应用程序池每隔1740分钟(29小时)回收一次。

 

  W3SVC根据“运行状况”页的选项来判断应用程序池运行是否正常,包括:

每隔指定的时间Ping工作进程,时间按秒计,默认值30秒启动时间限制(工作进程必须在指定的时间内开始)关闭时间限制(工作进程必须在指定的时间内关闭)是否启动快速失败保护(如果在指定的时间段内一定数目的工作进程发生失败,则禁用应用程序池)。

另外,ISAPI应用程序(包括ASP.NET和asp.dll)可以声明自己不再适合提供服务,要求回收。

 

  默认情况下,当IIS 6.0回收一个池时,它会使用一种称为overlapped recycle的回收技术。

在这种回收模式下,失败的工作进程仍会保持运行状态,同时创建一个新的工作进程。

IIS 6.0把新传入的请求传递给新的工作进程,但不拆除老的工作进程,直至老的工作进程处理完它队列中的请求,或者遇到超时错误。

在此期间,TCP/IP连接不会丢失,因为有http.sys保持着连接的有效性。

当失败的工作进程超时出错时,下一个请求传递给工作进程的请求是新的请求,因此原来保存在进程中的会话信息就会丢失。

所有这类回收操作都自动进行,无需管理员干预,而且在大多数情况下,不会造成明显的服务中断现象。

如有必要,可以将配置数据属性 LogEventOnRecycle的值设置为1,指示W3SVC执行回收操作时生成一条事件日志记录。

 

  对于那些不能以多个实例运行的应用程序,overlapped recycle回收技术可能引起问题。

如果遇到这类问题,可以将配置数据属性DissallowOverlappingRotation的值设置成 True

(1),关闭某个应用程序池回收操作时的进程“重叠”现象。

另外,对于失败的工作进程,有时我们可能不想将它拆除,仍旧保留该进程,以便检测和寻找发生问题的根源,这时可以将配置数据属性OrphanActionExe设置成执行文件的名字,使得工作进程成为“孤儿”时执行文件仍保持运行状态。

 

  另一个与应用程序池有关的特性是,IIS 6.0允许将应用程序池配置成一个Web园(Web Garden)。

要理解Web园的概念,可以设想这样一种情形:

假设有一个IIS 5.0服务器和三个Web网站,每一个Web网站运行着相同的应用程序,如果IIS 5.0能够自动按照圆形循环的模式将请求依次发送给这些功能上等价、实际上分离的Web网站,将负载分离到三个不同的进程,就可以构成一个小型的Web农场(Web Farm)——这就是Web园。

 

  在IIS 6.0的Web园中,我们不必创建额外的Web网站,只要指定用于某个应用程序池的工作进程的数量就可以了。

具体的配置步骤是:

打开应用程序池的“属性” 对话框,转到“性能”页,在“Web园”下面的“最大工作进程数”输入框中输入进程数量,如图八。

当服务器的负载较小,不需要额外的工作进程时,IIS 6.0在一定的时间后(默认20分钟,可配置)自动缩减实际的工作进程数量如果负载变大,需要额外的工作进程,IIS 6.0再次增加工作进程数量。

这一切操作都自动进行,不需要管理员干预。

 图6 

  两个新的配置数据属性——SMPAffinitze和SMPAffinitzeCPUMask——允许配置为工作进程指派的特定处理器:

将SMPAffinitized属性设置成true表示应该把分配给应用程序池的特定工作进程指派给特定的 CPU,SMPProcessorAffinityMask属性用来配置十六进制的处理器掩码,该十六进制处理器掩码指出应用程序池中的工作进程应该绑定到哪个CPU。

 

依本人经验,总的一句 依你站点的流量等相关因素来设置:

 

依据:

你可以看 任务管理器不同站点占用的内存,然后根据站点流量大小来设置; 设置定时 回收 及时释放垃圾连接,以免IIS假死。

 

一般情况下,每个站点独立用一个应用程序池,依据你服务器内存等相关因素来设置。

IIS优化-解决IIS访问速度慢问题

远程作品,转载请标明原始出处:

这几天给一游戏论坛做优化,论坛版本为:

DISCUZ7.2

环境是:

Windowsserver2003SP2+IIS+PHP+MYSQL

硬件:

双路CPU8核+8G内存+2X147GSAS硬盘

负载:

3000人实时在线

本想劝其改用linux架构,被其拒绝,理由是他不懂Linux,现在想来,你懂windows,出了问题你还是解决不来,那还不如用Linux,一般不会出问题呢

言归正传吧

论坛情况如下:

1,CPU不稳定,经常100%,时而又0%

2,访问非常缓慢

3,时而报错:

Noinputfilespecified

4,时而报错:

serviceunavailable

OK,下面我们一一分析并解决吧

先解决报错问题

第一步:

检查硬件,看看硬件是否有问题,这里由于出现了  “Noinputfilespecified”和“serviceunavailable”这两个错误

所以先检查磁盘是否有问题,注意,在复制大文件或大量碎文件的时候会导致serviceunavailable这个问题

这里我检查后发现他服务器硬件并没有问题,排除之;

第二步:

判断网络是否良好,做运维的惯例,第一二补都是检查硬件和网络,把基础问题排除掉,我检查发现他服务器网络并没有问题

第三部:

OK,我们来看看操作系统是否有问题,看操作系统日志,看系统是否有问题,看到系统有很多错误日子和警告日志,我一一查看,发现并没有系统组件或内核级别的错误,排除系统错误,系统是没有问题的

第四步:

查看是否受到攻击,是否中毒,是否修改了配置

经过查看并未发现有被攻击的可能

第六步:

重启服务,大家不要轻视重启,windows重启能解决非常多非常多的问题哦,我考虑了一下,因为服务器以前是好的,现在且一直没人有误操作,甚至没有人登录过,而且并没有被攻击,人数也不是高峰期,和平常一样的在线人生,为什么就突然这样了呢,得出终结就是:

系统自动安装了补丁,没有重启剩下!

OK,那就重启吧,争取得到对方同意后,重启了,OK,问题解决了不少,报错少了很多很多,但论坛依然慢

第五步:

上面都排除了,下面就重点来看看性能优化了

首先看看日志,发现经常报如下几个错误:

1,应用程序池:

为应用程序池'bbs'提供服务的进程关闭时间超过了限制。

进程ID是'9564'。

 

2,HTTP错误:

事件ID(54)的描述(在资源(HTTP)中)无法找到。

本地计算机可能没有必要的注册信息或消息DLL文件来从远程计算机显示消息。

您可能可以使用/AUXSOURCE=标识来检索词描述;查看帮助和支持以了解详细信息。

下列信息是事件的一部分:

\Device\Http\AppPool.

3,进程间通信错误:

为应用程序池'bbs'提供服务的进程在与WorldWideWebPublishing服务通信时遇到致命错误。

进程ID为'7684'。

数据字段包含错误号。

嗯,主要是这三种错误,我们来来分析一下

WIMP(windows+iis+php+mysql)架构工作原理:

1,客户端请求IIS

2,IIS处理静态页面,动态页面通过php5isapi.dll动态扩展交给PHP处理

3,PHP解析并且通过mysq扩展函数(php.ini里面打开)请求MYSQL查询和插入等操作

4,mysq进程处理PHP发过来的处理请求

整个过程就这样,那么好,最前面的问题我们来归个类:

Noinputfilespecified:

这个问题世界上是PHP404什么是PHP404呢,也就是静态页面不报这样的错误,说明和IIS配置,路径等都没有问题(注意哦,Noinputfilespecified这个错误也有可能是权限,路径等的错误哦,我这里不是),那么就是PHP文件无法被执行了,这说明是第三个环节出问题了,也就是PHP处理出现了问题,或者是IIS的动态扩展出现问题

serviceunavailable:

这个基本就是IIS的处理问题,或者硬件资源达到极限,导致IIS无法处理下一个请求

下面来我做了如下操作

1,注释掉php.ini里面的doc_root项

2,注释掉php.ini里面的cgi.fix_pathinfo=0项

3,设置系统盘下c:

\tmp权限添加everyone完全控制

重启PHP:

也就是重启IIS了

OK:

Noinputfilespecified问题解决了,不再报这个错误了

下面来解决速度慢和serviceunavailable问题

先利用windows2003的性能计数器看看IIS当前连接数(IIS并发连接)

打开--管理工具--性能---性能日志和警报能看到如下图:

然后按照下列图示来操作

OK,能看到IIS实时并发连接数了

这里是2000-3000的连接,可以看出并发不是很大,对于8核心+8G内存的服务器来说,处理这些连接是没有问题的!

我们再来看看负载情况吧:

可以看出,负载比较低的,但IIS就是慢,看来只能优化应用程序池了,我做了如下优化,如图

去掉请求队列限制

最大工作进程改为了2

重启IIS,OK问题终于解决了,速度终于飙起来了

在以SQLServer2005数据库为后台的ASP网站访问速度慢,情况如下:

一个服务器上的两个ASP网站,一个访问很快,一个很慢。

原因排查的思路与步骤:

首先在我电脑上依次打开这两个网站,一个两三秒就打开了,另一个需要10秒钟。

看来问题情况属实;

登陆到服务器,在服务器本地的IIS里分别打开这两个网站,结果还是一个快一个慢,排除是DNS解析时间和网络造成的影响;

打开两个网站程序的首页ASP文件,发现访问快的网站没有数据库查询,访问慢的网站查询了数据库。

由于程序里的数据库查询语句也很简单,排除了程序和数据库查询语句的问题,最后将问题定位到数据库SQLServer上;

打开SQLServer2005上面就一个数据库,随便在SQLServerManagementStudio上执行了两个复杂点的查询语句,速度很快,感觉不像是数据库查询速度的问题。

系统CPU、内存负载都不高。

实在找不到原因了。

就打开命令提示符,用netstat-ano检查了下网络连接。

发现只有sqlserver的1434端口在监听,竟然没有sqlserver的1433端口在监听和连接,但是没有监听和连接网站为何却能访问。

想着是否sqlserver修改了监听端口了。

打开SQLServer2005的SQLServer配置管理器SQLServer2005网络配置->MSSQLSERVER的协议->TCP/IP,发现TCP/IP竟然是禁用的,协议里只开启了SharedMemory。

属性里面设置的监听端口倒是默认的1433.于是将TCP/IP启用。

重启了SQLServer服务后打开网站速度就很快了。

问题算是解决了。

原因就是由于没有开启SQLServer里的TCP/IP协议,使用了SharedMemory的方式连接数据库,所以造成网站访问很慢。

关于以SQLServer2005为后台的ASP网站访问速度慢的原因排查及解决方案就介绍到这里了,希望本次的介绍能够对您有所收获!

(注:

可编辑下载,若有不当之处,请指正,谢谢!

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1