打开该网站,显示Service Unavailable,启动程序池仍无效,解决方案!

版权声明:本文为博主原创文章,未经博主允许不得转载。QQ527592435 https://blog.csdn.net/cplvfx/article/details/85221572

1、打开该网站,直接显示Service Unavailable,那就去看IIS,发现该网站所在的应用程序池被禁用;

2、手动启动该应用程序池,再打开该网站,继续提示Service Unavailable;

3、把该网站换了一个应用程序池,再打开该网站,还是提示Service Unavailable;

从上面三点来看,问题不在网站,也不在应用程序池,而在IIS本身,进入下一个阶段的排查。

1.打开“事件查看器”,先查看系统日志,里面出现了很多来自W3SVC的日志,如下图所示。

2.任意点开错误日志,显示如下图内容

3.再到应用程序日志里面查看,也是有很多的错误日志,显示如下图内容

4.查看错误日志,显示如下图内容

5.报错:无法加载站点/服务的所有 ISAPI 筛选器。因此启动中止。随后打开下面的

提示:HTTP 筛选器 DLL C:\Program Files\ISAPI_Rewrite\ISAPI_Rewrite.dll 加载失败。数据是错误。

那么答案就很明显了,是【ISAPI_Rewrite】的问题;

6.根据提示的路径,发现根本就找不到这个文件,郁闷……难道是谁删了?

7.查看IIS》网站》ISAPI筛选器

发现这个“ISAPI_Rewrite”的箭头是“红色”,并且箭头朝下;点击编辑,发现路径和提示的路径一直,断定这个东西应该在C盘,只是路径错了,(因为我没有删除这个东西,所以由此断定)

8.打开C盘搜索,ISAPI_Rewrite,发现在“C:\Program Files\Fuck”这个目录下,之前写的目录“C:\Program Files\ISAPI_Rewrite\ISAPI_Rewrite.dll”是错误的;

进入》IIS》网站》ISAPI筛选器》选中ISAPI_Rewrite》点击旁边的”编辑“》把路径修改为正确的路径》重启IIS》刷新网站,正常访问;

参考:

win2003 IIS6无法自动启动 来源:W3SVC,类型:错误,事件ID:1002,描述:应用程序池 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误 ?

http://www.360doc.com/content/14/1119/01/16402602_426289088.shtml

这几天在客户方服务器上(服务器为win2003,iis为iis6)部署了系统,之前一直是部署在win2008的iis7下面,还未出现过问题,当然,首次在iis6下部署也花了点时间,最终能够正常访问,但是部署完成之后第二天,客户就给我打电话说,系统无法访问,我打开一看,错为:“Service Unavailable”,服务不可用??第一时间想到iis服务有问题,进去一看,果然,系统所在应用程序池关闭了?本来是启动的,怎么好好关闭了?后来问了下那边网管,是因为重启了服务器,再看了下其他的应用程序池,都能够启动,郁闷了,先给启动吧,然后按照其他程序池的设置重新配置了一番,再重新启动,好了。

本以为这样就Ok了,谁知今天又给我打电话说之前的问题又出现了,尼玛坑爹啊,仔细看了下系统的日志的详细:“来源:W3SVC,类型:错误,事件ID:1002,描述:应用程序池 *** 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误”,被自动禁用?这个程序又得罪谁了,最后找了下资料,原来是程序池的启动账号权限不够,按照下面的顺序给配置起来,刷新下iis就好了。

 给用户NETWORK SERVICE加上访问IIS服务的权限

开始 – 控制面板 – 管理工具 – 组件服务 – 计算机 – 我的电脑 – DCOM – IIS ADMIN SERVICE – 属性 – 安全 – 启动和激活权限 – 自定义 – 添      加帐号“NETWORK SERVICE”,给该帐号赋予“本地启动”和“本地激活”的权限

在cmd下输入“IISRESET”命令(不含引号)重新启动IIS

当然,造成 “Service unavailable”的问题肯定不仅仅这个一个原因,找了下资料,分享给大家:

原因一:网站超过了IIS连接数


解决办法一:增加IIS连接数
备注一:Windows 2003的操作系统在提示IIS过多时并非像win2000系统提示“链接人数过多”,而是提示"Service Unavailable"

原因二:网站超过了IIS资源限制


解决办法二:增加网站的资源
备注二:Winodws2003中网站占用了超过IIS对该网站系统资源的限制后直接提示"Service Unavailable"

原因三:网站的程序发生太多的错误


解决办法三:修改程序错误
备注三:Winodws2003中网站错误太多,就会造成该网站所在的应用程序池出错,这个时候可以在Windows2003的日志中看到“应用程序池 'xxx' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误”,这个时候网站就会直接显示"Service Unavailable"

以上三个原因造成的"Service Unavailable",一般现象是出现"Service Unavailable"后,多刷新几次,就可以打开。

原因四:ACCESS引擎错误


解决办法四:重启IIS
备注四:有一些文件造成了ACCESS数据库出现“灾难性故障”及“未将对象引用设置到对象的实例”的错误

原因四造成的"Service Unavailable",现象是所有该服务器上的使用Access数据库的网站都出现错误,不能访问。

以上四个原因是常见的造成了"Service Unavailable"的原因,其他还有一些问题造成了该问题,基本只要IIS重启一下就可以的。

原因五:ISAPI筛选器没有正常加载

1、打开该网站,直接显示Service Unavailable,那就去看IIS,发现该网站所在的应用程序池被禁用;

2、手动启动该应用程序池,再打开该网站,继续提示Service Unavailable;

3、把该网站换了一个应用程序池,再打开该网站,还是提示Service Unavailable;

从上面三点来看,问题不在网站,也不在应用程序池,而在IIS本身,进入下一个阶段的排查。

1.打开“事件查看器”,先查看系统日志,里面出现了很多来自W3SVC的日志,如下图所示。

2.任意点开错误日志,显示如下图内容

3.再到应用程序日志里面查看,也是有很多的错误日志,显示如下图内容

4.任意点开错误日志,显示如下图内容

5.已经明白了错误之所在,是因为PHP的ISAPI没有加载成功造成的,再到IIS中确认一下,果然PHP的筛选器状态前是红色的向下箭头,没有加载成功,如下所示

6.一般加载不成功都是因为NTFS权限造成的,就去看一下PHP目录的NTFS权限,显示只有管理员组和系统组可以访问,如下图所示

7.添加用户组的权限到PHP目录

8.设置完毕,单击“开始”——“运行”,输入iisreset重启IIS

9.IIS重启完毕,再打开IIS管理器查看ISAPI筛选器状态,此时PHP已经成功加载

10.最后,在浏览器中打开网站,发现已经正常显示出来了

原因六:NETWORK SERVICE用户没有权限启动IIS Admin Service

因为是新装的IIS服务器,一般来说问题不可能出在IIS本身,出现这样的问题一般先从权限方面考虑,先考虑IIS服务的启动帐户没有权限启动IIS。

  1. 单击“开始”——“设置”——“控制面板”——“管理工具”——“服务”,打开本地服务管理器,找到IIS Admin Service,双击打开IISADMIN属性,选择“登陆”选项卡,显示登陆身份为本地系统帐户,那IISADMIN服务就没有权限问题。
  2. 单击“开始”——“设置”——“控制面板”——“管理工具”——“服务”,打开本地服务管理器,找到World Wide Web Publishing Service,双击打开W3SVC服务属性,选择“登陆”选项卡,显示登陆身份为本地系统帐户,那W3SVC服务就没有权限问题。(这里为了更加易操作,将打开“服务”的操作重新说了一遍)

从这里可以排除了服务启动帐号没有权限启动的问题,下面还是回到终极解决方法中来。

  1. 现象:单击“开始”——“设置”——“控制面板”——“管理工具”——“事件查看器”,打开事件查看器,单击“系统”,看到很多警告和错误,主要是以下几个:
    1)来源是“W3SVC”、事件ID为“1002”的错误,描述是“应用程序池 'DefaultAppPool' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。”
    2)来源是“W3SVC”、事件ID为“1009”的警告,描述是“为应用程序池 'DefaultAppPool' 提供服务的进程意外终止。进程 ID 是 '1756'。进程退出代码是 '0xffffffff'。”
    3)来源是“DCOM”、事件ID为“10016”的错误,描述是“应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为{A9E69610-B80D-11D0-B9B9-00A0C922E750})的 本地 激活 权限授予用户 NT AUTHORITY/NETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。”
  2. 分析:通过这几个事件可以判定应该是第三个事件ID为“10016”的DCOM错误引起了事件ID为1009的应用程序池意外退出,从而造成事件ID为1002的应用程序池被自动禁用的W3SVC错误,下面就来解决。
  3. 问题确定:通过DCOM错误的提示,原因是NETWORK SERVICE用户没有权限启动{A9E69610-B80D-11D0-B9B9-00A0C922E750},

找到了原因,下面就来解决这个问题

  1. 先查找这个CLSID{A9E69610-B80D-11D0-B9B9-00A0C922E750}对应的服务,单击“开始”——“运行”,输入“regedit”启动注册表编辑器,在注册表编辑器的左侧树中选中“我的电脑”,再使用快捷键“Ctrl+F”打开查找对话框,在“查找目标”后输入刚才的CLSID:“{A9E69610-B80D-11D0-B9B9-00A0C922E750}”,“查看”的复选框中只保留“项”,回车执行查找任务。
  2. 查找到该CLSID,在注册表编辑器右侧显示了该CLSID的信息,从该信息得知,该CLSID对应的服务是IIS Admin Service,现在就可以确定NETWORK SERVICE用户没有权限启动IIS Admin Service。
  3. 打开“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM配置”选项,找到“IIS Admin Service”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“NETWORK SERVICE ”, 赋予“本地启动”和“本地激活”的权限,重新启动IIS。
  4. 重启IIS,再次打开网页,现在已经正常显示了。

第六种原因造成service unavailable圆满解决。

猜你喜欢

转载自blog.csdn.net/cplvfx/article/details/85221572