在IIS 10中,我们有一个应用程序池,它在应用程序池回收后的初始化时间较慢(回收后大约5-7秒,第一次请求后30-50毫秒)。我做了一些研究,发现“应用程序初始化”。模块应该可以做到这一点。我将其安装到服务器上,并将应用程序池设置为"AlwaysRunning“,并将相应的站点设置为"PreloadEnabled == True”。在进行了这些更改之后,我们通过回收进行了测试,回收后3到4秒的响应时间似乎有点better...down。然后我尝试禁用“重叠回收”,看看这是否有帮助,在回收后1.5到2秒,然后在第一次请求后20到30毫秒,效果再一次好一点。
问题是:这是我们所能期望的最好的结果吗?我希望能有足够的时间来完全预热应用程序池,这样即使是第一个请求也只有几毫秒。问题是,我们发送到API的测试消息很小,而Prod中的测试消息会大得多,因此3-4秒的初始化在Prod中可能要长得多。
发布于 2021-09-17 20:08:34
以下是您可以执行的自动初始化IIS上托管的应用程序的步骤-
·已安装应用程序初始化功能-IIS8.0应用程序https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-application-initialization
·确保warmup.dll (应根据进程的位数从C:\Windows\SysWOW64\inetsrv\warmup.dll或C:\Windows\system32\inetsrv\warmup.dll加载)存在
·将应用程序池配置为始终运行(从高级属性),例如。在(%WINDIR%\system32\inetsrv\config\applicationHost.config) applicationHost.config文件中,应用程序池设置如下所示-
<add name="PreLoadApp" autoStart="true" managedRuntimeVersion="" startMode="AlwaysRunning">
<processModel idleTimeout="00:00:00" />
</add>·在applicationHost.config中再向下滚动到配置元素。在该部分中将有一个条目,修改您的应用程序,如下所示
<site name="PreLoadApp" id="5">
<application path="/" applicationPool="PreLoadApp" preloadEnabled="true">
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\PreLoadApp" />
</application>·然后从左侧的IIS管理器树视图中选择站点,并转到配置编辑器。

你现在应该已经很好了,试着回收你的应用程序池,它应该会自动初始化和预热。
您可以参考这些MS文档,了解有关应用程序初始化和配置步骤的更多信息- https://docs.microsoft.com/en-us/iis/configuration/system.webServer/applicationInitialization/ https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-application-initialization
https://stackoverflow.com/questions/69089466
复制相似问题