【问题标题】:"AlwaysRunning" not working“始终运行”不起作用
【发布时间】:2014-05-19 07:10:52
【问题描述】:

我们有用于运行 ASP.net 应用程序的 IIS 6.2 版。 我们有一个用于此 Web 应用程序的应用程序池。 .net 框架版本是“4.0”。 “Startmodus”是“AlwaysRunning”。

为什么用户第一次访问总是很慢?

我发现了几个与该主题相关的问题,但我不明白为什么“AlwaysRunning”在这里没有帮助。

创建一个每隔 15 分钟访问 Web 应用程序的 powershell 脚本以避免这种“IIS 睡眠模式”是个好主意吗?

【问题讨论】:

  • 也许这可以帮助你stackoverflow.com/questions/7387123/…
  • 我现在使用uptimerobot.com。它每 15 分钟触发一次请求。但我不敢相信通过一两个设置在 IIS 中解决它有那么复杂。
  • 通常有一些用户的网站不属于这一类。您的网站是一个罕见的案例。例如,如果您在一个池下有 10-20 个公共站点,则爬虫永远不会允许这种情况发生。如果你有一个私人网站,在一个游泳池下,那就是发生了

标签: asp.net iis


【解决方案1】:

聚会有点晚了,但您似乎需要将空闲超时设置为零(默认为 20),这意味着每 20 分钟将重新启动应用程序池。 Source

web.config 中还有一个标签,告诉 iis 在启动时向您的应用发送虚假请求,以确保您的应用已完全初始化:

<applicationInitialization
   remapManagedRequestsTo="Startup.htm"
   skipManagedModules="true" >
   <add initializationPage="/default.aspx" />
</applicationInitialization>

Source

【讨论】:

  • 链接http://patrickdesjardins.com/blog/iis-8-0-application-initialization-for-fast-startup-everytime非常有用。谢谢。
【解决方案2】:

我必须安装 IIS 的“应用程序初始化”功能(我认为只有 IIS 8+)。

https://www.iis.net/configreference/system.webserver/applicationinitialization.

此外,我必须设置以下设置:
应用程序池:StartMode 始终运行
页面:启用预加载

最后回收应用程序池以使更改生效。

【讨论】:

    【解决方案3】:

    AlwaysRunning 表示空闲时不会关闭。

    因此,您还需要配置自动启动:

    1. 在 IIS 管理器中,单击“连接”窗格中的计算机名称。
    2. 如果视图未激活,则切换到功能视图。
    3. 双击管理部分的配置编辑器 功能视图。
    4. 单击“部分”字段的向下箭头,展开 system.applicationhost,然后单击应用程序池。
    5. 单击 (收集),然后单击字段旁边的 eclipse (...) 显示计数。
    6. 在集合编辑器中,选择您要使用的应用程序池 想要配置 startMode 属性。
    7. 在底部的属性窗口中,设置autoStart的值 属性为 True。

    完整信息here

    【讨论】:

    • 感谢您的详细说明。属性“autoStart”已经为真,它不起作用。
    • 我需要增加shutdownTimeLimit吗?这会影响工作进程。是需要继续运行的工作进程吗?
    • @Matthias nope,默认值很好
    • 这个问题似乎没有明确的答案。我设置了一个机器人每 15 分钟调用一次网站以保持快速。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2011-06-25
    • 2016-05-16
    • 1970-01-01
    • 2011-09-19
    • 2020-01-08
    • 2016-09-17
    相关资源
    最近更新 更多