2012-03-06 14 views
7

A tiene un webrole azul con una página de prueba y un servicio en esa función. Después de publicar el rol, no se inicia automáticamente, solo en el primer uso. Entonces, si el rol se cierra por alguna razón, el primer uso después de eso es bastante lento.Inicio automático de webrole de Azure después de la implementación

¿Hay alguna manera de hacer que los webroles se inicien automáticamente después de su implementación (ya sea por primera vez o después de una migración)?

+1

La siguiente respuesta de Stackoverflow muestra cómo hacerlo en IIS 8 (Windows Server 2012) utilizando la función de inicialización de la aplicación: http://stackoverflow.com/questions/13237393/automatically-install-application-initialization-in-azure- web-role-sdk-v1-8-wi –

Respuesta

5

Eche un vistazo a auto start feature of IIS 7.5. Asegúrese de configurar osFamily = "2" para el webrole para que use el sistema operativo Windows 2008 R2.

Editar: Todavía estamos atrapados en osFamily = "1" por razones técnicas, por lo que todavía no hemos podido implementar la funcionalidad de inicio automático. Sin embargo, estos son los pasos que serían necesarios para configurar el inicio automático:

  1. crear su propio proveedor de inicio automático que implementa el IProcessHostPreloadClient interface. Solía ​​haber un proveedor predeterminado llamado Application Warm-Up Module, pero ya no está disponible para su descarga. Puede usar .Net Reflector para ver el contenido de Microsoft.ApplicationServer.Hosting.AutoStart.ApplicationServerAutoStartProvider.dll como una implementación de ejemplo. Este archivo DLL se incluye en Windows Servidor (no Azure) AppFabric.

  2. El siguiente paso es especificar la configuración correcta en su applicationHost.config. Se puede ingresar alguna variación del código enumerado here en su clase RoleEntryPoint para que se invoque cuando se active su Rol de Azure.

Comunique a la comunidad si crea correctamente su propio proveedor de inicio automático. En este punto, no hay mucha información sobre la implementación de IProcessHostPreloadClient en Internet.

+0

@Atesz - Una combinación de mi respuesta y la de David Makogon debería darle lo que necesita. –

+0

Buen punto en osFamily, ya que el valor predeterminado es "1" (Windows 2008 SP2). –

+0

Como veo, tienes que hacer esta magia en la máquina host, ¿o me falta algo? ¿Qué sucede si mi aplicación se migra a una nueva máquina? Tengo que hacerlo de nuevo? ¿No puedes hacerlo a través de Azure (el ServiceDefinition tiene una etiqueta de inicio, donde empiezo el sricpt mencionado por David)? Estoy un poco confundido aquí. [Mi fuente de autoinicio de IIS] (http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0 -series.aspx) –

2

Normalmente, una función se reinicia aproximadamente una vez al mes, para el mantenimiento del sistema operativo del huésped o del sistema operativo host subyacente. Lo que es más probable que veas es el tiempo de espera de AppPool debido a la inactividad, que exhibirá el mismo tipo de retraso en el primer golpe. El tiempo de espera predeterminado es de 20 minutos. Se puede cambiar el tiempo de espera a través de script de inicio elevada, con algo como:

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

He hablado de ello en another SO question también.

+0

+1 Olvidé mencionar configurar el tiempo de espera de AppPool aunque inhabilitemos el tiempo de espera en nuestras aplicaciones.: P –

+0

Sé sobre el tiempo de espera de AppPool y está deshabilitado (con el mismo script que menciona). Pero todavía se apaga a veces. Cada excepción se maneja, por lo que no puede ser un problema. Probablemente mantenimiento, es por eso que quiero comenzar el servicio nuevamente tan pronto como se despliegue nuevamente. –

Cuestiones relacionadas