IIS 7关闭应用程序池自动回收
- 格式:docx
- 大小:13.66 KB
- 文档页数:1
web服务器应用程序池CPU占用100%解决方法(详细图解)
偶然间发现自己的一台服务器运行的特别的慢,而且出现很不稳定的情况,直接影响到了整个服务器的性能,尝试着查找原因,通过任务管理器查看下每个进程占用系统资源的情况,突然发现一个w3wp.exe(进程名称: IIS Application Pool Process 是IIS工具的一部分。
)的进程cpu占用常时间跳动在90%以上甚至达到了100%
我们看到这个进程中的pid是1292 我们利用iisapp -a来找出是哪个程序池占用这么高的CPU
开始-->运行-->cmd
iisapp -a
经过查找我们找到了是1_FreeHost_1
下面我们就要对这个程序池来进行限制了
进入iis管理器-->应用程序池-->1_FreeHost_1-->属性-->选择“性能”标签-->启用CPU监视
把最大使用率进行设置,通常情况一个站的占用都会限制在30%以下
刷新CPU使用率值,通常设置在3分钟内,对于过高的建议2分钟内
超限执行的操作选择为“关闭”
再次观察任务管理器的cpu占用,效果很明显,已经下降到30%左右,但是这个进程还是总在不停的跳动,所以建议大家在遇到这种情况的时候可以这样来对程序池做限制,但是最根本的是要对调用该程序池的网站进行优化。
*iisapp -a 可以查到的信息是一个个对话框的显示一不小心就错过了给大家介绍个好方法
先再CMD里面输入: cd %systemroot%\system32
然后再输入: cscript.exe iisapp.vbs -a。
2011-05-20 23:46 108人阅读评论(0) 收藏举报" 为应用程序池'AppPool #1' 提供服务的进程关闭时间超过了限制" 的错误出现究其原因是由于网站的访问量连接数过大,引起应用程序池处理连接的时候,新的还没有接替,而旧的又要回收,但在回收的过程中不及时,照常应用程序池当机,网站无法访问,出现了这个错误。
当网站无法访问的时候,手动回收应用程序池,即可恢复,不过手动恢复的话,毕竟很麻烦,你不能一天都盯着这个网站看吧?问题出在应用程序池的话,那我们就从应用程序池的配置下手来看是否能解决问题。
1、首先建议每个网站分别建立一个应用程序池,一个应用程序池将对应不同的w3wp.exe 进程,在“命令提示符”下使用iisapp命令可以察看网站对应的w3wp.exe的pid值,方便查找出问题的进程。
2、应用程序池的配置个人意见觉得在应用程序池的属性窗口中,“回收”和“运行状况”2个选项卡的配置比较重要。
2.1、回收选项卡1、回收工作进程(分钟):在工作进程运行多少分钟后回收工作进程,默认启用,并且设置为1740分钟(29小时);2、回收工作进程(请求数目):在工作进程处理多少个HTTP请求后终止此工作进程,默认禁用,如果启用则默认值为35000;3、在下列时间回收工作进程:在指定的时间回收工作进程,默认禁用;如需启用,勾选后点击添加按钮添加回收的时间即可,使用24小时制定义回收的时间;4、消耗太多内存时回收工作进程:最大虚拟内存(兆):当工作进程使用的虚拟内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为500 M;建议设置为不超过虚拟内存总数的70%;最大使用的内存(兆):当工作进程使用的物理内存达到设置的值时回收工作进程,默认禁用,如果启用则默认值为192 M;建议设置为不超过物理内存总数的60%;2.2、性能1、在空闲此段时间后关闭工作进程(分钟):当工作进程空闲多少分钟后关闭此工作进程,这降低了空闲工作进程对系统资源和CPU性能的消耗,默认启用并且设置为20分钟;2、核心请求队列限制为(请求次数):当HTTP.sys接收到某个客户端发送的HTTP 请求时,如果处理此请求的对应应用程序池的工作进程还处于忙状态,则HTTP.sys将接收到的请求保存在对应应用程序池的请求队列中,直到工作进程空闲为止。
教你如何设置IIS应用程序池什么是应用程序池呢?这是微软的一个全新概念:应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。
因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。
Windows 2003同时支持两种工作模式,默认为ISS 6.0工作进程隔离模式。
工作进程隔离模式防止一个应用程序或站点停止了而影响另一个应用程序或站点,大大增强了IIS的可靠性。
那么如何设置两种工作模式呢?启动IIS管理器,右击网站,选择“属性”,打开属性对话框(图1)。
在IIS 6.0工作进程隔离模式下,所有的应用程序代码都在隔离环境中运行,它们是如何进行隔离的呢?Windows 2003新增了应用程序池,工作进程隔离模式允许客户创建多个应用程序池,每个应用程序池都可以有不同的配置。
因为这些应用程序池直接从内核(而非WWW服务)接收它们的请求,所以性能和可靠性得到了增强。
要隔离运行在同一台计算机上但属于不同网站的Web应用程序,需要为每个网站创建单独的应用程序池。
创建应用程序池在IIS管理器中,打开本地计算机,右键单击“应用程序池”,选择新建“应用程序池” (必须在工作进程隔离模式下才能建立应用程序池)。
“应用程序池名称”框中,输入新的应用程序池名称。
如果在“应用程序池ID”框中出现的 ID (如:AppPool #1)不是您想要的,可进行重命名。
如果您单击了“将现有应用程序池作为模板”,请在“应用程序池名称”框中右键单击想要用来作为模板的应用程序池。
最后单击[确定]。
指派应用程序池在 IIS 管理器中,右键单击您要为其指派应用程序池的应用程序,然后单击“属性”。
单击“主目录”选项卡,确认您正在指派的目录或虚拟目录的“应用程序名”是否已被填写。
如果“应用程序名”框尚未被填写,请单击“创建”,然后输入名称。
在“应用程序池”列表框中,选择您想要为其指派的应用程序池的名称。
IIS应用程序池设置指南(佳人减肥网推荐)通过回收应用程序池设置,可以控制如何恢复系统资源。
以下几节介绍如何指定回收应用程序池设置。
指定回收应用程序池设置回收应用程序池设置是在应用程序池的属性对话框的“回收”选项卡中指定的。
设置回收应用程序池设置打开 IIS 管理控制台,单击加号展开本地计算机。
单击加号展开“应用程序池”文件夹。
右击适当的应用程序池,然后单击“属性”。
出现应用程序池的属性对话框。
单击“回收”选项卡,然后设置适当的应用程序池设置。
应用程序池“属性”对话框的“回收”选项卡内存回收“内存回收”是等效于memoryLimit 进程模型设置的应用程序池设置。
它指定辅助进程可以使用的最大内存量。
如果辅助进程超出了这一数量,将创建新的进程来替换它,并且当前所有请求都被重新分配给该新进程。
在memoryLimit 进程模型设置与“内存回收”应用程序池设置之间有两个重要的区别:memoryLimit 进程模型设置只使用物理内存。
“内存回收”应用程序池设置允许您为物理内存和虚拟内存分别指定限制。
由于公共语言运行库的垃圾回收器工作的方式,物理内存(或物理内存和虚拟内存的组合)常用于 应用程序。
虚拟内存常用于将堆划分为多个片断的传统本机应用程序。
“内存回收”应用程序池设置是按兆字节 (MB) 指定的,而不是按相对于总内存的百分比指定的。
回收辅助进程“回收辅助进程”是等效于requestLimit 进程模型设置的应用程序池设置。
它指定导致辅助进程或应用程序池被回收的请求的数目。
默认情况下“回收辅助进程”是禁用的。
若要启用“回收辅助进程”,请选取该复选框并在数值调节框中指定请求数。
回收多个辅助进程“回收多个辅助进程”是等效于timeout 进程模型设置的应用程序池设置。
它指定回收辅助进程或应用程序池的时间间隔。
默认情况下“回收多个辅助进程”是启用的而且设置为 120 分钟。
通过更改数值调节框中的值,可以指定一个不同的时间间隔。
IIS应⽤程序池配置详解及优化参数说明1.常规属性名称属性详解NET CLR 版本配置应⽤程序池,以加载特定版本的 .NET CLR。
选定的 CLR版本应与应⽤程序所使⽤的相应版本的 .NET Framework 对应。
选择“⽆托管代码”将导致所有的 请求失败。
队列长度HTTP.sys 将针对应⽤程序池排队的最⼤请求数。
如果队列已满,新请求将收到 503“服务不可⽤”的响应。
默认队列长度设置是1000,范围在10-65535 之间。
名称应⽤程序池名称是应⽤程序池的唯⼀标识符。
启动模式将应⽤程序池配置为在按需运⾏模式或始终运⾏模式下运⾏。
启⽤ 32 位应⽤程序如果针对 64 位操作系统上的应⽤程序池将该属性设为 True,则为应⽤程序池提供服务的⼯作进程将处于 WOW64 (Windows on Windows64)模式。
WOW64模式下的进程是仅加载 32 位应⽤程序的 32 位进程。
托管管道模式将 配置成作为 ISAPI 扩展并以经典模式来运⾏。
在后⼀种情况下,托管代码集成到请求处理管道中。
Classic模式:指的是与IIS 6或者之前版本保持兼容的⼀种模式,⼀个典型问题就是,在处理这种动态⽹站的时候,它是通过⼀个所谓的ISAPI程序,作为插件的⽅式来⼯作的。
针对不同的动态应⽤程序(例如ASP,PHP等),会需要不同的ISAPI。
Integrated模式:这种全新的模式,允许我们将更好地与IIS集成,甚⾄允许我们在中编写⼀些功能(例如Module)来改变IIS的⾏为(扩展)。
集成的好处是,不再通过ISAPI的⽅式,提⾼了速度和稳定性。
⾄于扩展,则可以使得我们对于IIS,以及其他类型的请求有更多的控制。
2.CUP属性名称属性详解处理器关联掩码强制此应⽤程序池的⼯作进程在特定 CPU 上运⾏的⼗六进制掩码。
如果启⽤了处理器关联,则值 0 将导致错误。
处理器关联掩码(64位选项)为64位计算机制定强制此应⽤程序池的⼯作进程在特定 CPU 上运⾏的⾼顺序 DWORD ⼗六进制掩码。
关闭和启动iis的语句
关闭IIS的语句:
iisreset /stop.
启动IIS的语句:
iisreset /start.
文章内容:
标题,关闭和启动IIS的方法。
在Windows服务器上,Internet Information Services(IIS)是一个常用的Web服务器软件,用于托管和管理网站和Web应用程序。
有时候,我们需要关闭或启动IIS来进行一些维护或调试工作。
本文将介绍如何使用命令行来关闭和启动IIS。
首先,我们需要打开命令提示符(CMD)或者PowerShell窗口,然后输入以下命令来关闭IIS:
iisreset /stop.
这条命令将会停止IIS服务,使得网站和应用程序无法访问。
在关闭IIS之后,我们可以进行一些必要的维护工作,比如更新网
站内容或者进行系统调试。
当我们完成了必要的工作之后,可以使用以下命令来启动IIS: iisreset /start.
这条命令将会重新启动IIS服务,使得网站和应用程序能够再
次被访问。
需要注意的是,关闭和启动IIS可能会影响正在访问的网站和
应用程序,因此在进行这些操作之前,建议提前通知相关的用户或
者进行必要的备份工作。
总之,通过使用命令行来关闭和启动IIS,我们可以方便地进
行网站维护和系统调试工作,确保网站和应用程序能够正常运行。
IIS6w3wp.exe进程占⽤cpu和内存过多的解决⽅法在IIS6下,经常出现w3wp.exe的内存及CPU占⽤不能及时释放,从⽽导致服务器响应速度很慢。
解决CPU占⽤过多:1、在IIS中对每个⽹站进⾏单独的应⽤程序池配置。
即互相之间不影响。
2、设置应⽤程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。
根据w3wp取得是哪⼀个应⽤程序池:1、在任务管理器中增加显⽰pid字段(任务管理器>查看>选择列>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⽅⾯的限制,或检查程序有⽆死循环之类的问题。
解决内存占⽤过多,可以做以下配置:1、在IIS中对每个⽹站进⾏单独的应⽤程序池配置。
即互相之间不影响。
2、设置应⽤程序池的回收时间,默认为1720⼩时,可以根据情况修改。
再设置当内存占⽤超过多少(如500M),就⾃动回收内存。
我的设置如下:⾸先是对CPU的限制:在启⽤cpu监视后,我设置该应⽤程序池最⼤的cpu使⽤率为50%。
设置刷新cpu时间为1分钟,设置操作为“关闭”。
最⼤⼯作进程数设置为1。
这个意思是,IIS刷新检测该独⽴池的CPU使⽤情况时间为1分钟,如果超过设置的cpu 限制50%,就会发出关闭池的指令,要求池在指定的时间内关闭。
IIS无故自动关闭停止已经不是罕见的事情了,处理这个问题是让我很头痛的事情,遇到这个问题不太可能一次性解决,多数都是用排除法一个个测试排除错误,最终找到那个错误命令。
最近我的服务器遇到了这个问题,我很无奈,我很急,客户也很着急,每天IIS都要自动停止2次以上,我总是怀疑是进程池问题,此文章是针对IIS进程池解决办法,如果你遇到了死循环代码,或者其他非进程池,那此文章不太适合你了网络上有关iis的问题和相关解决方案,多不胜搜,但很多都比较零散,没有系统的解决方案;另外,有些解决方法,似是而非,不能找到其中的问题关键点,本人平时对于服务器的应用上也有点实践,因此,今天稍稍总结一点平时遇到地问题和解决方法,特别是对iis的特殊权限引起问题、iis应用程序池假死问题和比较罕见的iis重启命令和自动重启办法。
其它相关问题,继续关注本博。
一、2003应用程序池自动死了,不能恢复了,一直出现 Service Unavailable 常见方法如下。
1:没有打SP1补丁的时候会出现这个IIS6.0假死问题,但现在微软都在自动更新里面出补丁了,一般你打好最新补丁后是不会出现此问题了。
(所以现在的IIS假死与这个关系不是很大)2:从 IIS6.0开始CPU资源都在应用池里面限制了,不象以前的IIS.5。
所以假死的池的缘故就是池被拉死,你在网站打不开的时候可以看到你的某个应用池是禁用的,上面出现一个红叉。
你鼠标右键启动网站又会自动恢复。
这个原因:大概是以下几个因数造成的。
(1):你限制了应用池的资源,限制得太小比如:50这样或更少更多一点,这个时候如果你这个池下面的网站占用CPU太高,比如超过50% 那么5分钟后他就自动死了,手工默认建立的应用池默认是超过资源不操作。
出现上面这个情况解决方法:1:不限制CPU资源,(这个是不可取的,不限制资源,有的程序有BUG占用资源厉害了的,服务器都会被拉死,你可能都无法操作服务器。
Service Unavailable 日志:程序池超过了其作业限制出现问题原因和表现:日志中记录到:应用程序池xx超过了其作业限制设置,这个应用程序池就是我们平时说的已分配好的IIS地址池,为什么过段时间就会在日志事件中看到某某池子超过了其作业限制设置呢?或者提示:“应用程序池””xxx”” 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误,这时,访问这个网站就会提示:Service Unavailable。
一般系统会在30秒左右恢复正常,多刷新几次就能正常访问了。
在2003服务器操作系统下则会提示”Service Unavailable”,出现这种情况是由于网站超过了系统资源限制造成的,主要是程序占用资源太多。
另外,如果你的网站当前访问人数过多,如刷站,别人盗连你站资源,包括图片,在线论坛等设置,如超过了系统的iis连接数限制,也会出现Service Unavailable的提示(win2003的主机刚直接提示:Service Unavailable)。
解决办法:一、检查硬盘空间是否被占满,主要检查C盘二、应用池相关:1.IIS应用程序池–属性–回收工作进程(分钟):选中,值为1740;2.回收工作进程(请求数目):不选(原先设置为35000)在下列时间回收工作进程:不填3.消耗太多内存时回收工作进程:全不选。
(2、3、4项可能避免了在访问量高的时候强制回收进程可能引发的服务器响应问题,猜的^-^)服务器内存够大,豁出去了给它用。
4.运行状况–启用快速失败保护的选项将勾去掉;还不行的话,新建应用程序池,不同的网站引用不同程序池三、独立进程的内存堆戋消耗完了,IIS不能创建更多的进程工作空间来处理解决方法:1. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC2. 在Parameters键下新建一个DWORD项,名字为:UseSharedWPDesktop 值1 重启IISPS:Access数据库修复压缩―――〉重做系统。
IIS7.5中神秘的应⽤程序池标识解析(程序池账户)IIS7.5中(仅win7,win2008 SP2,win2008 R2⽀持),应⽤程序池的运⾏帐号,除了指定为LocalService,LocalSystem,NetWorkService这三种基本类型外,还新增了⼀种ApplicationPoolIdentifywin7的官⽅帮助上是这么说的:ApplicationPoolIdentity – 默认情况下,选择“应⽤程序池标识”帐户。
启动应⽤程序池时动态创建“应⽤程序池标识”帐户,因此,此帐户对于您的应⽤程序来说是最安全的。
也就是说"ApplicationPoolIdentity"帐号是系统动态创建的“虚拟”帐号(说它是虚拟的,是因为在⽤户管理⾥看不到该⽤户或⽤户组,在命令⾏下输⼊net user也⽆法显⽰,但该帐号⼜是确实存在的)如何验证该帐号确实是存在的的?打开任务管理器,观察⼀下:w3wp.exe即iis进程,上图中⾼亮部分表明该iis进程正在以帐号luckty运⾏(注意这⾥的luckty即为上图中的应⽤程序池名称)好了,搞清楚这个有什么⽤?先来做⼀个测试,⽐如我们在iis⾥新建⼀个站点,主⽬录设置为c:\2\,应⽤程序池就指定刚才图中的luckty假如我们在该站点的default.aspx.cs⾥写⼊这样⼀⾏代码 :File.AppendAllText("C:\\TestDir\\1.txt",DateTime.Now.ToString());前提是c盘必须先建⼀个⽬录TestDir,同时除Administrator,System保留完全控制权外,其它帐号的权限都删除掉运⾏后,会提⽰异常:对路径“C:\TestDir\1.txt”的访问被拒绝。
原因很明显:该站点运⾏时是以应⽤程序池(luckty)对应的虚拟帐号运⾏的,⽽这个虚拟帐号不具备c:\TestDir的访问权限这种情况在web服务器(iis6)安全配置中很常见,⽐如我们把图⽚上传⽬录,常常放在主⽬录之外,同时以虚拟⽬录形式挂于站点之下,另外在IIS6中不指定该⽬录任何执⾏权限,这样即使有⼈⾮法上传了asp/aspx⽊马上去,也⽆法运⾏搞不成破坏!⾔归正传,要想让那⼀⾏测试代码正常运⾏,解决办法很简单,把虚拟帐号的权限加⼊⽂件夹安全权限中即可,但是问题来了:这个虚拟帐号我们是不可见的,如果你直接添加名为luckty的⽤户到⽂件夹安全帐号⾥,根本通不过(提⽰找不到luckty ⽤户),说明这个虚拟帐号名称并不是"luckty"关键:⼿动输⼊ IIS AppPool\luckty (即IIS AppPool\应⽤程序池名),再确定,这回ok了.当然除了⽤"IIS AppPool\应⽤程序池名"外,windows内部还有⼀个特殊的⽤户组Authenticated Users,把这个组加⼊TestDir 的安全权限帐号⾥也可以,不过个⼈觉得没有"IIS AppPool\应⽤程序池名"来得精确.结束语:IIS7.5的虚拟帐号设计确实很棒,想想传统IIS6的时候,为了把同⼀服务器上的各站点权限分开(以防⽌⽊马捣乱),不得不创建⼀堆iuser_XXX,iwam_XXX帐号并指定密码,再⼀个个站点分配过去,累死⼈!⽽虚拟帐号设计则让这类管理轻松多了,也不⽤担⼼密码过于简单或过期问题。
在web应用程序中经常有一些任务就需要在Global文件启用一个线程来实现,
那假设我们在自己的应用程序中加入了框架,并且配置等等都OK 了。
这个站点访问量很少,现在只有几个人上班的时候才会使用,结果第二天过来一看,后台调度的线程和计算任务都停止了,如果你抓取了Application_End事件,会发现这个事件居然被调用了。
那一定是IIS的应用程序池回收的机制在作怪了。
因为IIS的默认设置里面,如果一个站点所处的应用程序池超过一段时间没有被访问或者请求,IIS就会自动回收这个程序池,并且把进程杀掉。
那进程里面的线程肯定也活不下来了。
但是我们可以通过设置应用程序池参数使其不会被简单的自动回收(有些情况无法避免,比如热部署的站点,错误数量超限等等)
在IIS中找到这个站点所用的程序池,点击“高级设置...”
在打开的列表中更改以下设置:
回收——固定时间间隔(分钟)改为0
——虚拟/专用内存限制(KB)改为0
进程模型——闲置超时(分钟)改为0
这样应用程序池就不会被定时的自动回收了,任务进程也就可以一直在运行。
另外还有一种解决的办法就是,在设定的应用程序池回收时间内用,webrequest访问站点中的某个页面,这样也可以达到不被自动回收的效果。