IIS Web Farm AppPool 预热

IIS Web Farm AppPool warm-up

我有多个服务器(带有 IIS 8.5 的 2012 R2)共享配置、共享虚荣 URL(f5 负载平衡),并托管多个不同的应用程序。其中一个应用程序(一个 ASP.NET MVC 网络应用程序)很少使用(可能每周一两次),但当需要使用时,它需要快速加载。

我已将 AppPool 的启动模式设置为 "AlwaysRunning",并将回收 -> 常规时间间隔设置为 0,但似乎每次我点击该应用程序时,它都需要很长时间才能加载(大约 10-20 秒)但随后的页面请求会立即发生。

我是否需要设置其他设置来让应用程序预热?该应用程序具有 Kerberos 身份验证并且访问权限仅限于一个安全组(我什至不是该组的成员),因此我无法使用外部 PowerShell 脚本手动保持温暖。

检查您的事件日志以了解应用程序池故障。

如果您有一些异步 initialisation/maintenance 任务与请求并行启动或有一些延迟但随后失败,它可以使请求(以及之后的一些)成功但在不久之后终止应用程序池.这会表现出这些确切的症状。

您可以在点击应用程序之前检查应用程序池是否 运行。

如果您在 IIS 中单击您的服务器名称,然后单击 "Worker Processes",您将看到不同应用程序池的所有进程 ID 和该状态。

通过这种方式,您可以在访问应用程序之前确认应用程序池是 运行。这将帮助您缩小问题所在的范围。

1) 应用程序池是运行? 2) 我的应用程序是否已加载到我的应用程序池中?

如果 1 签出,则转到步骤 2 并检查该应用程序的库是否已加载到该进程 ID 中。