IIS应用程序池自动停止,报503错误解决方法

前两天遇见一个问题,部署网站之后,浏览时总是报503,找了半天才发现是用户权限问题,现在记录一下,方便以后遇到的大伙快速解决问题,以至于不会浪费太多时间

解决方法:

应 用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为

{A9E69610-B80D-11D0-B9B9-00A0C922E750}

) 的 本地 激活 权限授予用户 NT AUTHORITYNETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。

解决方法,给NETWORK SERVICE 加上访问iis服务的权限,具体方法如下:

点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电 脑”-“DCOM”选项,

选择其下的“IIS ADMIN SERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“NETWORK SERVICE ”,给该帐号赋予“本地启动”和“本地激活”的权限,重新启动IIS之后再访问同一站点,则一切正常。

//大伙可能发现在IIS ADMIN SERVICE下右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”的按钮不可点击

下面的内容就是解决这一问题的方式:

A9E69610-B80D-11D0-B9B9-00A0C922E750

这个是win2008 R2 x64的安全特性.一些核心系统组件只能允许本地帐号,TrustedInstaller有完全控制权限,而不是本地管理员组

要在Windows Server 2008 R2 上修改 “IIS Admin Service” ,你需要授予本地管理员组有注册表权限:

1.在组件管理器中查到IIS的appid

2.使用regedit,定位到HKEY_CLASSES_ROOT\AppID\{刚查到的ID}”

3.右键点击{刚查到的ID},选权限

4.在权限设置窗口中点高级,选择所有者标签,选中administrators为所有者

5.授予administrators组有读/写等所有权 注意:务必不要修改TrustedInstaller的权限

503这个错误出现的原因会有很多种,大伙要根据自己的情况排除一下,下面贴出几种原因和排除思路(下面内容来自:http://www.cnblogs.com/onlytiancai/archive/2007/06/03/769309.html

原因:

1、管理员可能关闭应用程序池以执行维护。

2、当请求到达时应用程序池队列已满。

3、应用程序池标识没有使用预定义账户:网络服务,而自己配置了标识,但是配置的这个用户不属于IIS_WPG组

4、应用程序池启用了CPU监视,并且设置了CPU利用率超过一定百分比关闭应用程序池,而开发人员写的服务端页面(.asp,.aspx)执行效率不高,会引起CPU的长时间占用,最终达到设置的百分比,从而引起应用程序池关闭

5、应用程序池的性能选项卡的请求队列限制所填的数值太小,默认为1000,可修改成一个更大的值,比如说4500.

6、web.config的system.web/httpRuntime节点的appRequestQueueLimit属性设置的值太低。

排查思路:

1、先检查C:\WINDOWS\system32\LogFiles\HTTPERR\httperr1.log,看里面有没有503错误,503错误是不会记录到C:\WINDOWS\system32\LogFiles\W3SVC1下的,如果503那一行有AppShutdown字样,肯能是由于CPU占用率太高导致自动关闭应用程序池。如果是AppOffline可能是由于应用程序标识出错引起的,如果是Disabled可能是由于管理员手工关闭应用程序池引起的。根据这些信息然后再采取响应措施。

2、根据原因5和原因6来设置更大的请求队列数目。

3、禁用所有应用程序池回收选项。

4、添加ASP.NET\Requests Current,ASP.NET\Requests Queued两个计数器,查看IIS的请求数和队列数。