2012-03-06 80 views
7

A有一个带有测试页和该角色服务的天青卷轴。 发布角色后,它不会自动启动,仅在第一次使用时才会启动。 因此,如果角色由于某种原因而被关闭,那么之后的第一次使用会很慢。部署后自动启动Azure卷轴

有没有办法使webroles在部署后立即自动启动(第一次或迁移后)?

+1

以下Stackoverflow答案显示了如何在IIS 8(Windows Server 2012)中使用应用程序初始化功能对此进行此操作:http://stackoverflow.com/questions/13237393/automatically-install-application-initialization-in-azure- web-role-sdk-v1-8-wi – 2013-10-23 05:24:57

回答

5

查看auto start feature of IIS 7.5。确保你为webrole设置了osFamily =“2”,以便它使用Windows 2008 R2操作系统。

编辑:由于技术原因,我们仍然停留在osFamily =“1”上,所以我们还没有能够实现自动启动功能。然而,这里是将需要设置自动启动的步骤:

  1. 创建一个实现IProcessHostPreloadClient interface自己自动启动供应商。曾经有一家名为Application Warm-Up Module的默认提供商,但现在无法下载。作为示例实现,您可以使用.Net Reflector查看Microsoft.ApplicationServer.Hosting.AutoStart.ApplicationServerAutoStartProvider.dll的内容。此dll包含在Windows 服务器(不是Azure)AppFabric中。

  2. 下一步是在applicationHost.config中指定正确的设置。代码here的一些变体可以输入到您的RoleEntryPoint类中,以便在您的Azure角色启动时调用它。

请让社会知道,如果你成功地创建自己的自启动供应商。在这一点上,关于在互联网上实施IProcessHostPreloadClient的信息并不多。

+0

@Atesz - 我的答案和David Makogon的组合应该会给你你需要的东西。 – 2012-03-06 17:39:41

+0

osFamily的优点是默认值为“1”(Windows 2008 SP2)。 – 2012-03-06 19:38:12

+0

正如我所看到的,你必须在主机上做这个魔术,还是我错过了什么?如果我的应用程序迁移到新机器会怎么样?我必须再做一次?你不能通过Azure来实现吗(ServiceDefinition有一个启动标签,我在哪里启动David提到的sricpt)?我在这里有点困惑。 [我的IIS自动启动源代码](http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0 -series.aspx) – 2012-03-17 21:37:11

2

角色通常每月重新启动一次,用于维护Guest或主机主机OS。你更可能看到AppPool由于不活动而超时,这将表现出相同类型的初始命中延迟。默认的超时时间是20分钟。您可以通过提升启动脚本更改超时,喜欢的东西:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00 

another SO question讨论这一点。

+0

+1忘记提及设置AppPool超时,即使我们禁用了应用程序中的超时。:P – 2012-03-06 17:29:53

+0

我知道AppPool超时,并且它被禁用(使用与您提到的相同的脚本)。但它有时会关闭。每个异常都被处理,所以它不会成为问题。大概是维护,这就是为什么我想在再次部署服务时再次启动服务。 – 2012-03-17 21:24:32