IIS 故障排除

IIS · 第 10 篇 · 适用于 Windows Server 2019 / 2022 / 2025

📑 目录

  1. 常见错误代码
  2. 日志分析技巧
  3. 常用诊断工具
  4. 常见问题

1. 常见错误代码

状态码含义常见原因排查方向
400Bad Request请求格式错误检查 URL 编码、请求参数
401Unauthorized身份验证失败检查认证配置、权限
403Forbidden权限拒绝检查 NTFS 权限、IP 限制
404Not Found文件不存在检查物理路径、URL 重写规则
500Internal Server Error服务器内部错误查看详细错误、事件日志
502Bad Gateway上游服务不可达检查应用程序池、后端服务
503Service Unavailable服务不可用检查应用程序池状态、队列

2. 日志分析技巧

PowerShell - 日志排查命令
# 查看最近的 500 错误
Get-Content "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log" | Select-String " 500 "

# 统计各状态码数量
Get-Content "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log" | ForEach-Object { ($_ -split ' ')[14] } | Group-Object | Sort-Object Count -Descending

# 查看响应时间最慢的请求
Import-Csv "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log" -Delimiter ' ' | Sort-Object 'time-taken' -Descending | Select-Object -First 10 'cs-uri-stem', 'time-taken'

# 检查特定 IP 的访问
Get-Content "D:\IISLogs\MyWebSite\u_ex$(Get-Date -Format 'yyMMdd').log" | Select-String "192.168.10.10"

3. Failed Request Tracing

1

安装 Failed Request Tracing 模块:Install-WindowsFeature -Name Web-Http-Tracing

2

选择网站 → 双击"失败的请求跟踪规则" → 添加规则

3

配置规则:

  • 指定要跟踪的内容:状态码 500-999
  • 提供程序:选择 WWW Server
  • 详细程度:详细
4

触发错误后,查看 %SystemDrive%\inetpub\logs\FailedReqLogFiles\ 下的 XML 报告

PowerShell - 启用 FRT
# 安装模块
Install-WindowsFeature -Name Web-Http-Tracing

# 启用网站的 Failed Request Tracing
Set-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
    -Filter "system.webServer/tracing/traceFailedRequests" `
    -Name "enabled" -Value $true

# 添加跟踪规则
Add-WebConfigurationProperty -PSPath "IIS:\Sites\MyWebSite" `
    -Filter "system.webServer/tracing/traceFailedRequests" `
    -Name "." -Value @{path="*"}

4. 常见问题

Q1:500 错误但看不到详细信息

IIS 默认隐藏详细错误信息。修改 web.config 添加:<httpErrors errorMode="Detailed" /> 或在 IIS 管理器中配置错误页。

Q2:应用程序池频繁停止

检查事件查看器中 WAS 来源的错误日志。常见原因:应用程序异常、内存超限、依赖服务未启动。

Q3:如何查看实时请求

使用 Worker Processes 功能:IIS 管理器 → 服务器节点 → Worker Processes → 查看当前请求。或使用 netsh http show servicestate 命令。