A有一个带有测试页面和该角色服务的天蓝色webrole。 发布角色后,它不会自动启动,仅在首次使用时启动。 因此,如果角色由于某种原因而关闭,那么之后的第一次使用是非常缓慢的。
有没有办法让webroles在部署后立即自动启动(第一次或迁移后)?
答案 0 :(得分:5)
查看auto start feature of IIS 7.5。确保为webrole设置osFamily =“2”,以便它使用Windows 2008 R2操作系统。
编辑:出于技术原因,我们仍然坚持使用osFamily =“1”,因此我们还无法实现自动启动功能。但是,以下是设置自动启动所需的步骤:
创建自己的自动启动提供程序,实现IProcessHostPreloadClient interface。曾经有一个名为Application Warm-Up Module的默认提供程序,但它不再可供下载了。您可以使用.Net Reflector查看Microsoft.ApplicationServer.Hosting.AutoStart.ApplicationServerAutoStartProvider.dll的内容作为示例实现。此dll包含在Windows 服务器(非Azure)AppFabric中。
下一步是在applicationHost.config中指定正确的设置。可以在RoleEntryPoint类中输入列出的here代码的某些变体,以便在Azure角色启动时调用它。
如果您成功创建了自己的自动启动提供程序,请告知社区。此时,没有很多关于在互联网上实施IProcessHostPreloadClient的信息。
答案 1 :(得分:2)
对于Guest或底层主机操作系统的操作系统维护,角色通常每月重启一次。您更有可能看到的是由于不活动而导致AppPool超时,这将显示相同类型的初始命中延迟。默认超时为20分钟。您可以通过提升的启动脚本更改超时,例如:
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00
我也在another SO question中讨论了这个问题。