在IIS管理器中,应用程序池在基本设置对话框中有“立即启动应用程序池”的复选框,还有一个名为“启动模式”的高级设置,可以设置为“OnDemand”或“AlwaysRunning”。
这些设置有什么区别?
答案1
与原始海报有相同的问题,但找不到简洁的答案,以下是我研究的分析。
应用程序池 != 工作进程 (w3wp.exe)
- 通常我们看到每个应用程序池都有一个 w3wp.exe 实例在运行,但是技术上我们可以配置一个运行多个 w3wp.exe 实例的网络花园。
网络花园……它们是好是坏? - 工作进程在单个应用程序池的上下文中执行。
立即启动应用程序池= 自动或手动启动
基本设置...
- 已启用
IIS 将自动启动应用程序池。 - 已禁用
有人需要手动启动应用程序池。
启动模式= 工作进程启动模式:立即或者按需
高级设置...
- 永不停止
如果应用程序池正在运行,则立即启动 w3wp.exe 进程。 - 一经请求
如果应用程序池正在运行,则在有入站应用程序请求时启动 w3wp.exe 进程。
补充笔记
- IISRESET /stop
停止 IIS、应用程序池和工作进程(w3wp.exe 实例)。 IISRESET /start
启动 IIS,上述配置设置将决定应用程序池和工作进程(w3wp.exe)何时启动。IIS 管理器停止 Web 服务器 GUI 操作
停止 Web 服务器处理入站请求,但不会停止应用程序池或 w3wp.exe 进程。IIS 管理器启动 Web 服务器 GUI 操作
启动 Web 服务器以处理入站请求,但不会启动应用程序池或 w3wp.exe 进程。
用于启动/停止 Web 服务器的菜单操作IIS 管理器停止应用程序池 GUI 操作
停止 w3wp.exe 进程。- IIS 管理器启动应用程序池 GUI 操作
AlwaysRunning 与 OnDemand 将在 w3wp.exe 进程启动时确定。
用于启动/停止应用程序池的菜单操作
答案2
看起来“立即启动应用程序池”控制在启动 World Wide Web Publishing 服务时应用程序池是否“已启动”。但“已启动”的应用程序池不一定正在运行(意味着可能没有 w3wp 进程)。
如果应用程序池未“启动”,则当您访问使用该应用程序池的站点时,将获得 503 错误。
如果应用程序池已“启动”,则 w3wp 进程将为您的请求提供服务。“始终运行”表示当应用程序池启动时,w3wp 进程将启动。按需意味着当您首次访问与应用程序关联的网站时,w3wp 进程将启动(w3wp 启动时会有延迟)。
答案3
回复有点晚了,但我会添加我的发现,因为我四处寻找同一问题的答案。
“OnDemand”:当收到第一个 Web 应用程序请求时,IIS 将启动工作进程。“AlwaysRunning”:当 IIS 启动或创建应用程序池时,IIS 将立即启动应用程序池的工作进程。
答案4
启动模式
一些 Web 应用程序需要花费大量时间才能启动。默认情况下,IIS 仅在收到 Web 应用程序的第一个请求时启动工作进程。因此,对于需要较长时间初始化的 Web 应用程序,用户可能会看到响应缓慢。
对于此类应用程序,最好在 IIS 启动后立即启动工作进程。应用程序池有一个 startMode 设置,当设置为 AlwaysRunning 时,会在 IIS 启动后立即为应用程序池启动工作进程。
IIS 8 在应用程序池设置 UI 中为您提供了此设置。