大家都知道,网站在使用linux服务器的过程中,并不会出现IIS出现Service Unavailable错误,但是在使用windows服务器事就会出现这样的错误,尤其是windows 2003服务器,笔者也遇上了几次,十分的折腾,往往出现这种情况一般连续刷新可能会偶尔的重新访问,要么就是CPU达到100%(百分百),使得网站无法正常访问。
鉴于此,有的站长朋友采取的措施是重启IIS,或者重启服务器,但是建议不要重启服务器,如果你重启服务器不顺利,产生某种故障的话,那会让网站在更长的时间都无法正常访问,所以最佳办法是重启,所以很多人甚至为此写了一个重启的批处理器来自动重启IIS,目的是解决IIS出现Service Unavailable错误,其实这样笔者认为并非根治,最佳的办法是采用下面的教程,至少我按照这个教程设置了之后,就再也没有出现过IIS出现Service Unavailable错误了。
一般出现Service Unavailable可以从系统和应用层的日志看下是否有记录信息。造成该错误的情况可能有:
1、isapi筛选器加载的扩展项失败

检查ISAPI筛选器中的加载项不能正常加载。
2、应用程序池启动失败 这边可能的原因较多,可能的情况有
2.1 应用程序池标识异常,检查应用程序池中的用户是否被禁用,账户密码是否正常
以下以默认“应用程序池”为例。

通过图中第3步可以看到使用的用户。
通过“用户和组”中的用户,即可查看到对应的用户账户是否被禁用。

2.2 应用程序池所属用户不在IIS_WPG组 或者IIS_WPG组权限异常 其余的情况需要具体情况来具体分析

3、服务器请求量过大,负载过高。
服务器的负载,可以通过服务器中的“任务管理器”来查看CPU和内存以及“联网”的性能状态,也可以通过阿里云控制台中的“实例实时信息”来查看。
4.如果在重启服务器后,发现IIS 6.0所承载的所有网站全部无法访问,全部出现Service Unavailable错误,建议通过如下方法进行排查分析:
查看系统日志,如果出现类似如下错误(来源-W3SVC,错误ID-1002):
应用程序池 'defaultapppool' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。
请尝试通过如下方法解决:
如下图所示
点击“开始”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项.
选择其下的“IIS Admin Service”,右健选择“属性”.
然后切换到“安全”选项卡,在“启动和激活权限”中选中“自定义”后点击编辑.
添加帐号“Network Service”, 给该帐号赋予“本地启动”和“本地激活”的权限.
在命令行中使用IISRESET命令重新启动IIS(点“开始”-“运行”-“CMD”,点确定,然后运行IISRESET)

5. 查看系统日志,如果出现类似如下错误(来源-W3SVC,错误ID-1009):
为应用程序池 'DefaultAppPool' 提供服务的进程意外终止。进程 ID 是 '332'。进程退出代码是 '0xffffffff'.
请尝试通过如下方法解决:
点击“开始”-“管理工具”-“Internet 信息服务(IIS)管理器”.
定位到“应用程序池” 下报错的相应应用程序池,右击选择“属性”.
切换到“运行状况”选项卡,取消勾选“启用快速失败保护”.

如果问题还是未解决,参阅微软官方KB ,该问题可能是由于某些系统补丁导致的,已知的可能导致该问题的补丁包括:
KB973917
KB982666
请参阅如下步骤尝试解决:
打开系统盘下相应的补丁目录,比如C:\WINDOWS\$NtUninstallKB973917$
运行子目录spuninst下的 spuninst.exe程序卸载补丁
重启系统
说明:如果相应的补丁目录已经被删除,可以尝试重新下载相应补丁安装后再使用上述方法进行卸载
笔者说明:IIS出现Service Unavailable错误,可以通过你的服务器事件查看器来进行查看,经常会出现如下所示的错误提醒:
应用程序池 'DefaultAppPool' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。进程 ID 是 '3056'、‘1002’等等。

那么你完全可以按照以上所分享的教程进行解决。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

很详细,绝大多数情况都给分析了,我的服务器是windows2003,我用了这个方法解决了IIS出现Service Unavailable错误问题,不过后来我仔细想了一下,还是升级成了 windows 2008, 用的是 IIS7.5,但win2008要求内存至少