(整理)IIS 7 503 "service unavailable" errors

时间:2023-03-09 07:36:22
(整理)IIS 7 503 "service unavailable" errors

  原文地址:http://mvolo.com/where-did-my-iis7-server-go-troubleshooting-503-quotservice-unavailablequot-errors/

一) 这是什么?

    WAS(W3SVC)服务,是创建用来处理接收的HTTP 请求的IIS 工作进程的服务,当WAS创建IIS工作进程失败后就会出现这个错误

  二)为什么会发生?

    有许多原因造成WAS创建IIS工作进程失败:程序配置、不正确的程序池配置、IIS配置错误造成的工作进程初始化失败或某个进程崩溃等。

  三)如何解决这个错误?

    步骤1:检查|IIS的应用程序池是否停止

      WAS启动工作进程如果在5分钟内失败5次,会进入故障保护模式并停止程序池中的处理程序,这样可以防止程序崩溃。

      一旦包含你的处理程序停止,就会产生503错误,我们通过下列方式检测:

                > %systemroot%windowssystem32inetsrvAppCmd.exe list apppools

(整理)IIS 7 503 "service unavailable" errors

如果发现程序池是停止的,那么我们就可以继续下一步了

    步骤2:检查事件日志

       IIS 工作进程初始化失败或WAS创建IIS工作进程失败时,会在windows中写下日志供我们查看。

      > eventvwr

      导航到 “Application” event log first. Look for error events from IIS-W3SVC-WP source.

(整理)IIS 7 503 "service unavailable" errors

在上面的例子中,IIS 工作进程因为加载DLL不成功造成初始化失败(路径拼写错误);如果错误原因在工作进程启动之前,那么就是WAS创建工作进程错误,日志写在“System”event log。在我的例子中,IIS工作进程初始错误,WAS多次启动不成功进入故障保护模式,下图是查看“System”event log

(整理)IIS 7 503 "service unavailable" errors

MS的链接失效了,故跳过一段

步骤3:处理错误

    当然这一步依赖于参考前一步找到特定的错误,一定要参考IIS Health Model的事件日志参考(链接丢失啊),例如:

WAS 启动工作进程失败:

      1)配置错误

      2)程序池使用了错误的账户名或密码

      3)达到允许的最大数量的进程或没有资源

  IIS 初始化失败:

      1)配置错误

      2)DLL路径错误或加载失败

      3)module初始化失败,或注册模块入口点失败

  程序崩溃:

      一个模块或程序组件产生一个调试中断,或内存访问冲突造成进程的终止等。

    修复错误后,就可以进行下一阶段了。

步骤4:重启应用程序池

    > %systemroot%windowssystem32inetsrvAppCmd.exe start apppool DefaultAppPool

    (将 DefaultAppPool 替换成你的程序池名称).

    程序池正常启动入下图:

(整理)IIS 7 503 "service unavailable" errors

如果仍然存在问题,那么继续参考下面的文章:

    http://mvolo.com/troubleshooting-iis7-503-quotservice-unavailablequot-errors-with-startup-debugging/

    http://mvolo.com/where-did-my-iis7-server-go-troubleshooting-quotserver-not-foundquot-errors/

    http://mvolo.com/troubleshoot-iis7-errors-like-a-pro/

    http://social.technet.microsoft.com/wiki/contents/articles/21754.event-id-2276-iis-worker-process-availability.aspx