HTTP 5xx错误: HTTP 5xx错误意味着什么? -->服务器无法正确响应用户的请求,在服务端产生错误或服务器遇到一个异常(the server is aware that it has erred or is incapable of performing the request) 产生原因: 服务器的配置导致 Web应用执行错误 HTTP 500状态码定义: RFC 2616 IIS状态码 -->参见KB 318380
排错前的准备(1): 配置客户端IE 5.X IE 6.X -->取消IE高级设置中的"显示友好的HTTP错误信息"(KB 294807) 配置IIS以提供更多的信息-->配置自定义错误消息 启用调试信息 配置日志记录 基于安全的考虑-->生产环境中不要向客户端返回过于详尽的错误信息
排错前的准备(2): 收集日志文件: IIS日志-->%SystemRoot%\System32\LogFiles\W3Svcn\*.log Http.sys日志-->%systemroot%\system32\logfiles\httperr 事件查看器
排错前的准备(3): 选择适当的工具软件: WFetch 性能监视器 IISState ADPlus /Windbg 排错过程的一般步骤: 收集信息-->分析问题-->验证-->解决
HTTP 500.x: 服务器内部错误 常见的500.x子错误: 500.11-->应用正在关闭中(未实现) 500.12-->应用正在启动中 500.13-->服务器忙 500.14-->应用配置无效(未实现) 500.16-->UNC授权错误 500.17-->URL授权无法找到 500.18-->URL授权无法打开 500.100-->内部ASP错误
500.12错误: 页面所属的应用程序正在关闭/重新启动 global.asa-->IIS会监视文件更新提醒,如果global.asa被更新,会重启整个应用 大多数情况下刷新页面即可解决问题 解决方案-->经常性的出现500.12 关闭防病毒软件对global.asa文件的扫描 调整备份软件 参见KB 248013 /KB 302424
500.13错误: Web服务器太忙 ASP请求处理-->线程池: 默认25线程/处理器 默认最大请求队列限制在3000 解决方案-->监视Active Server Page /Request Queue计数器 调整metabase属性值AspRequestQueueMax-->在命令提示符里面输入cd \Inetpub\AdminScripts按回车键--输入adsutil.vbs get /w3svc/AspRequestQueueMax按回车键可以看到当前的metabase属性值 使用NLB处理负载
500.15错误: 不允许直接请求global.asa global.asa-->是一个特殊文件,不能从浏览器直接访问 应用初始和结束时的一些预定义操作 会话(session)初始和结束时的操作
500.16错误: UNC授权凭据不正确 IIS使用logon API获取访问票据 解决方案: 重设UNC用户凭据,启用相应用户账户
500.17 /500.18错误: URL授权问题(IIS 6.0专有错误) 500.17-->授权存储无法找到 500.18-->授权存储无法打开 解决方案: metabase中相关属性(AZStoreName /AzScopeName) 对授权存储的访问权限(AppPool标示具备读权限) 修复损坏的授权存储
URL授权: 原理: 利用存储在XML文件或AD中的配置信息,实现基于角色的授权管理-->见下图:
500.100错误(1): 由ASP产生的错误: 脚本错误 组件错误(组件丢失) 权限设置 脚本执行超时 方法: 使用监视工具(filemon、regmon) 使用500-100.asp返回详细的ASP错误,参见KB261200 使用调试工具(IISState /AD+/Windbg)
500.100错误(2): 原因: 脚本运行期错误 用户权限 应用程序本身返回的500.100错误 解决方案: 使用IDE集成环境进行调试 使用Script Debugger
500.100错误(3): 原因: 组件丢失 现象-->ADODB.Connection(0x800A0E7A) Provider cannot be found.It may be properly installed. /Nwind.asp.line 10 解决方案-->regsvr32.exe重新注册组件 参见KB 278604 ASP 0115错误(未处理的错误) 可能产生的原因: 文件注册表权限 不正确的组件注册 未处理的组件执行错误 参见KB 194190(ASP 0115可能原因) 解决方法: 使用FileMon RegMon、提升AppPool用户权限 使用IISState找到出错的组件的错误原因 使用ADPlus KB 281674
500.100错误(4): 原因: 脚本执行超时 Active Server Pages,ASP 0113(0x80004005) 解决方案: 调整站点ASP脚本超时时间 检查Server.Timeout 优化ASP应用执行效率
501错误: HTTP头指定了未实现的功能-->IIS 6.0只支持RFC2616和RFC2518中定义的HTTP头方法 HTTP-->GET/PUT/POST/HEAD/OPTIONS/CONNECT/DELETE WebDAV-->COPY/LOCK/MKCOL/MOVE/PROPFIND/PROPPATCH/UNLOCK 参见KB 247643 /KB 811262
505错误: HTTP版本不受支持 原因: 第三方的产品干扰IE,发送不受支持的HTTP版本请求 使用HTTP 1.1访问只支持HTTP 1.0的旧Web服务器
502错误(1): 网关或代理服务器收到了无效响应-->CGI或者Proxy未返回有效的HTTP头 代理服务器出错 原因: CGI程序执行异常-->502.1 CGI应用程序超时 502.2 CGI应用程序出错
502错误(2): 解决方案: 查看日志-->sc-win32-status net helpmsg 找到产生问题的CGI程序和问题原因
503错误(1): 服务不可用 一般由内核模式驱动(http.sys)直接返回503错误 查看httperr.log
503错误(2): 可能产生错误的原因(http.sys) 日志错误描述 可能的原因
Disabled 管理员停止了AppPool
AppOffline AppPool处于快速失败标识错误,无法启动AppPool
ConnLimit 连接数达到了站点或者服务器的上限
AppShutdown 由于CPU使用超过限制,AppPool被关闭
QueueFull AppPool请求队列长度超出
AppPoolTimer 应用忙碌,在AppPool队列等待超时
503错误(3): 我能让错误信息更友好一些吗? 无法修改http.sys传回的错误 解决方案: http.sys-->增加"核心请求队列限制(请求次数)"数值 w3svc-->调整快速失败保护参数 优化应用程序性能 使用NLB分担服务器负载
504错误: 网关超时-->服务器在试图完成请求时不能从所访问的上游服务器及时接收到响应 常见于代理服务器(MS Proxy /ISA)返回的消息中