Categorías
Servidores

Mantener un sitio Web siempre arrancado en el IIS

El IIS por defecto arranca un sitio web en la primera petición de un cliente, y lo mantiene arrancado durante un tiempo establecido (20min), pasado este tiempo, si no hay ninguna petición de ningún cliente, el IIS para el sitio web y recicla sus recursos.

Ante la siguiente petición el IIS deberá volver a iniciar el sitio web, este proceso suele ser costoso, y es lo que ocasiona que la primera petición pueda costar un par de segundos.

Si tenemos un sitio web que sea critico y no queremos que nos ocurra esto, tenemos varias opciones.

Mantener el sitio web con usuarios

Esto no depende de nosotros, si el sitio web llega a ser muy importante, siempre habrán usuarios conectados y estará siempre levantado.

O al menos, durante un horario especifico.

Esta opción no depende de nosotros así que vamos a descartarla.

Mantener el sitio web con peticiones

Hay utilidades para realizar peticiones cada x tiempo a un web, para mantenerla siempre activa, o incluso podemos crearnos un servicio que cada X tiempo realice peticiones, con el mismo propósito.

Esta opción también la descartamos, ya que no es lo idóneo y nos obliga a tener una aplicación externa realizando el proceso.

Configurar adecuadamente el IIS

El propio IIS permite realizar esta tarea, solo debemos de configurarlo de forma adecuada.

Nos aseguramos de que el IIS tiene la opción instalada.

Activar o desactivar las características de Windows

Configurar el pool del sitio web, para que lo mantenga siempre arrancado.

Modo de inicio

Modificar el Web.config, para especificar cual es la URL que debe lanzar, cada vez que pare el sitio web.

Dentro de la sección, system.webserver, añadir el siguiente bloque.

<applicationInitialization doAppInitAfterRestart="true" skipManagedModules="false">
<add initializationPage="/url" />
</applicationInitialization>

De esta forma, siempre que el IIS pare el sitio web, ya sea por inactividad, o porque se cumpla alguno de los motivos de reciclaje, automáticamente el IIS volverá a arrancar el sitio web, de forma que el primer usuario que entre no tenga que esperar a que el sitio arranque.

Usando esta opción, no tendremos que tener aplicaciones externas realizando peticiones innecesarias.