如何将 IIS 服务器安装到 Windows 10 上
对于这个问题,请参见博客 Win10 如何开启 IIS 服务以及如何打开 IIS 管理器
什么是 IIS 应用程序池
应用程序池 是 IIS 中的“进程隔离单元”。每个应用程序池都会启动一个或多个 w3wp.exe 进程来运行 Web 应用。
不同应用程序池之间的应用程序互不影响(内存、崩溃、配置独立)。
同一个应用程序池下的网站或应用程序共享同一个工作进程(意味着共享内存空间、CLR 实例等)。
IIS 中的层级结构
1 2 3 4 5
| 服务器 (Server) └── 应用程序池 (Application Pool) └── 网站 (Site) └── 应用程序 (Application) └── 虚拟目录 (Virtual Directory)
|
网站与应用程序池的关系
- 一个网站(Site)必须绑定到一个应用程序池
- 一个应用程序池可以服务多个网站
常见建议
- 每个网站使用独立的应用程序池
- 多个小型网站,资源有限,可共用一个应用程序池
- 同一个网站下有多个子应用(/api、 /admin)等,可以分别分配不同的应用程序池以提高稳定性
常用的 IIS 程序池配置
🧩 一、应用程序池主要配置分类总览
| 配置类别 |
示例设置项 |
作用 |
| 常规(General) |
.NET CLR 版本、托管管道模式 |
决定运行环境 |
| 进程模型(Process Model) |
标识(Identity)、空闲超时、最大工作进程数 |
控制进程生命周期与权限 |
| 回收(Recycling) |
定期回收、特定时间回收 |
防止内存泄漏 |
| 性能(Performance) |
空闲超时、最大请求数、队列长度 |
控制性能表现 |
| 故障回收(Rapid-Fail Protection) |
最大失败数、时间间隔 |
防止频繁崩溃 |
| CPU 限制(CPU) |
限制百分比、操作模式 |
控制 CPU 占用 |
| 启动/关机行为(Start Mode / Idle Timeout) |
AlwaysRunning, OnDemand |
控制池启动策略 |
🧱 二、常用配置详解
1️⃣ 常规设置(General)
| 项目 |
说明 |
常见配置 |
| .NET CLR 版本 |
指定运行环境 |
.NET CLR v4.0 或 无托管代码(纯静态/Node.js/PHP) |
| 托管管道模式 |
管道处理方式 |
Integrated(推荐) 或 Classic(旧版兼容) |
| 启动模式(Start Mode) |
应用程序池是否在 IIS 启动时立即启动 |
AlwaysRunning(生产环境推荐) |
2️⃣ 进程模型(Process Model)
| 项目 |
说明 |
常见配置 |
| 标识(Identity) |
应用池运行的系统账户 |
默认 ApplicationPoolIdentity(安全性高) |
| 空闲超时(Idle Time-out) |
无请求后多久自动回收(分钟) |
默认 20 分钟;高访问量网站建议设为 0(禁用) |
| 最大工作进程数(Web Garden) |
每个池可启动的进程数 |
默认 1,不要轻易改(除非是特殊并行需求) |
| 加载用户配置文件 |
是否加载用户配置文件 |
一般设为 True(对部分框架如 ASP.NET 必须) |
3️⃣ 回收设置(Recycling)
| 项目 |
说明 |
常见配置 |
| 定期回收(固定时间间隔) |
默认每 1740 分钟(29 小时) |
可自定义;如凌晨 3:00 定时回收 |
| 特定时间回收(Specific Time) |
在指定时刻重启池 |
03:00:00(防止高峰期重启) |
| 回收条件 |
内存限制、虚拟内存限制等 |
内存 > 1GB 可设 Private Memory Limit 1024MB |
| 回收事件日志 |
回收时写入日志 |
建议启用(方便排查问题) |
| 项目 |
说明 |
常见配置 |
| 空闲超时 |
与进程模型中重复,用于节省资源 |
高访问量站点可设 0(禁用) |
| 最大请求队列长度 |
等待处理的最大请求数 |
默认 1000,可根据负载调整 |
| 定期 ping(Ping Enabled) |
监测工作进程是否响应 |
保持默认启用 |
5️⃣ 快速失败保护(Rapid-Fail Protection)
| 项目 |
说明 |
常见配置 |
| 启用快速失败保护 |
防止应用频繁崩溃时无限重启 |
默认启用 |
| 最大失败数 |
在指定时间内最多允许失败次数 |
默认 5 次 / 5 分钟 |
| 失败后操作 |
超出次数后停止应用池 |
默认启用(防止死循环崩溃) |
6️⃣ CPU 限制(CPU)
| 项目 |
说明 |
常见配置 |
| 限制 CPU 使用率 |
限制单进程 CPU 百分比 |
例如:Limit = 80,Action = Throttle |
| 动作(Action) |
超过限制后执行的动作 |
Throttle(降速) 或 KillW3wp(终止进程) |
⚙️ 三、常见推荐配置模板(生产环境)
| 配置项 |
推荐值 |
说明 |
| .NET CLR 版本 |
v4.0 / 无托管代码 |
取决于框架 |
| 托管管道模式 |
Integrated |
性能好 |
| 启动模式 |
AlwaysRunning |
防止首请求延迟 |
| 空闲超时 |
0 |
保持常驻内存 |
| 回收时间 |
03:00:00 |
低峰期自动回收 |
| 标识 |
ApplicationPoolIdentity |
安全性高 |
| 最大请求队列 |
2000 |
高并发下防止拒绝服务 |
| 快速失败保护 |
启用 |
防止崩溃循环 |
| CPU 限制 |
80%, Throttle |
控制资源占用 |
🧠 四、补充建议
- ✅ 生产环境 建议每个独立网站或微服务使用独立应用程序池;
- ⚠️ 不要盲目提高“最大工作进程数”(Web Garden),容易引发 Session 丢失;
- 🔍 可使用 AppCmd.exe 或 PowerShell 来批量查看/修改应用程序池配置;
- 📈 定期查看 IIS 日志 + Windows 事件查看器,监控应用池重启次数和原因。
如何重新启动 IIS
下面的命令需要在命令行(以管理员身份启动的)中执行
完~