Tuning IIS Windows 2016

  1. Home
  2. Knowledge Base
  3. IIS
  4. Tuning IIS Windows 2016

Objetivo y alcance

Establecer las bases, criterios y actividades para verificar que los usuarios que deban configurar IIS dentro de los servidores lo realicen y puedan hacer las mejores prácticas para un mejor desempeño y optimización.

Este documento incumbe a todos los departamentos de Implantación y/o Infraestructura, para el momento que sea necesario realizar la instalación y/u optimización de IIS dentro del (los) servidor(es).

Definiciones

IIS – Internet Information Server

Roles y responsabilidades

Infraestructura y/o Implantación. Son las área dentro de la organización que podrán que podrán realizar estas configuraciones.

Ajuste del rendimiento de IIS

En este post, explicaré 8 recomendaciones que potencialmente mejoran el rendimiento de IIS. La mayoría de las recomendaciones son compatibles con IIS 7.0 y versiones más recientes con algunas excepciones. Mencionaré las excepciones en su sección respectiva.

Zonas de recomendación:

  1. Output Caching
  2. Application Initialization
  3. Default Document
  4. HTTP keep-alive
  5. Cache-control Header
  6. Idle Time-out Action
  7. Dynamic Compression
  8. Other options (Queue Length, Enable 32-bit Applications)

Almacenamiento en caché de salida

Se aplica a IIS 7+

IIS tiene componentes de modo kernel y de modo de usuario.  Los componentes en modo kernel reciben y enrutan solicitudes HTTP, administran conexiones y envían respuestas a los clientes. Los componentes de modo de usuario procesan las solicitudes y preparan las respuestas. Hay una memoria caché de respuesta para los niveles de modo kernel y modo de usuario.

El uso de la memoria caché permite que IIS controle las solicitudes más rápido. Sin embargo, el consumo de la memoria física aumenta a medida que las entradas almacenadas en caché ocupan espacio en la memoria. Se recomienda supervisar el uso de memoria y limitar la cantidad máxima de memoria que puede utilizar la memoria caché.

Kernel-mode cache

HTTP.sys es una parte del kernel-mode e incluye una caché de respuesta (caché en modo kernel). Las solicitudes se pueden satisfacer por completo mediante esta memoria caché. Habilitar la memoria caché en modo kernel acelera el tiempo de carga de la página, reduce el uso de ancho de banda y la cantidad de transferencia de datos, y disminuye la carga del servidor, lo que reduce significativamente el costo de CPU de manejar las solicitudes.

Algunas características, como la autenticación y la autorización, no se pueden servir mediante Output Caching. Por lo tanto, IIS solo permite que el contenido estático como HTML, JavaScript, CSS e imágenes se almacene en caché en el nivel de modo kernel.

User-mode cache

El contenido dinámico, como las páginas ASP y PHP, se puede almacenar en caché en el nivel de modo de usuario. En el nivel de modo de usuario, las solicitudes se controlan en contenedores (procesos de trabajo) lo que proporciona más seguridad y capacidad de administración.

Habilitar Output Caching

Siga los pasos que se indican a continuación para habilitar el almacenamiento en caché de salida. Estos pasos habilitarán el almacenamiento en caché en modo kernel y en modo de usuario.

  1. Vaya al Administrador de IIS
  2. Haga clic en el nombre del servidor
  3. Haga doble clic en “Output Caching
  4. Haga clic en “Edit Feature Settings” en el menú “Actions” en el lado derecho
  5. Compruebe las opciones “Enable cache” y “Enable kernel cache
  6. Haga clic en un sitio web para el que desee habilitar el Output Caching de resultados
  7. Haga doble clic en “Output Caching
  8. Haga clic en “Edit Feature Settings” en el menú “Actions” en el lado derecho
  9. Compruebe las opciones “Enable cache” y “Enable kernel cache

Reinicie el servicio HTTP. Ejecute los comandos abajo en el orden dado en el símbolo del sistema:

iisreset /stop
net stop http
inicio neto http
iisreset /start

Application initialization

Se aplica a IIS 7.5+

Se trata de una característica de IIS que administra lo que sucede cuando se inicia una aplicación por primera vez. El proceso de inicio afecta a la velocidad del sitio web para los usuarios que llegaron al sitio web por primera vez después de una implementación, reinicio del servidor, restablecimiento de IIS, reinicio del grupo de aplicaciones o tiempo de inactividad del grupo de aplicaciones. Para aplicaciones grandes, el tiempo de inicio podría ser alto porque el sitio web compila el código, inicia el almacenamiento en caché, carga componentes y genera archivos.

Enable Application Initialization

Siga los pasos que se indican a continuación para habilitar la inicialización de aplicaciones.

Nota: Los pasos siguientes se aplican a IIS 7.5 o. IIS 7.5 requiere que se instale el módulo de inicialización de aplicaciones. Este módulo está integrado para IIS 8+, pero debe comprobarse durante la instalación de IIS:

Application Initialization module should be installed via Server Manager

Pasos:

  1. Vaya al Administrador de IIS
  2. Haga clic en “Application Pools
  3. Seleccione el grupo de aplicaciones que utiliza el sitio web para el que desea habilitar la inicialización de aplicaciones
  4. Haga clic en “Advanced Settings” en el panel “Actions
  5. Seleccione “Always Running” en la lista “Start Mode” (Para IIS 8 y versiones inferiores, seleccione “True ” para “Start Automatically” opción además de la ” Selección de Start Mode ” )

Continúe con los pasos a continuación:

  1. En el panel “Connections“, seleccione el sitio web o la aplicación
  2. Haga clic en ” Advanced Settings ” en el panel ” Actions “
  3. Seleccione ” True ” en la lista “Preload Enabled

Reiniciar IIS (iisreset en el símbolo del sistema)

Default document

Se aplica a IIS 7+

IIS usa módulos para procesar solicitudes en la canalización integrada. Uno de estos módulos es el Default Document Module. Controla las solicitudes que van a la raíz de un directorio para una aplicación. Puesto que estas solicitudes no especifican un nombre de archivo, el módulo de documento predeterminado busca en la lista de documentos predeterminados permitidos. Esto puede afectar negativamente al rendimiento de IIS.

Al reducir y reordenar la lista de documentos predeterminados, se puede aumentar el tiempo de respuesta de la aplicación. Al editar la lista, asegúrese de tener solo los documentos predeterminados que utiliza esa aplicación en particular. Además, asegúrese de que la lista comienza con el nombre de documento predeterminado al que se accede con más frecuencia

Edit Default Document List

Siga los pasos que se indican a continuación para editar la lista Documento predeterminado.

  1. Vaya al Administrador de IIS
  2. Haga clic en el sitio web o la aplicación para la que desea editar la lista Documento predeterminado
  3. Haga doble clic en “Default Document

Edite la lista (Elimine los nombres de archivo que no se utilizan. Mover el nombre de archivo más utilizado a la parte superior).

HTTP keep-alive

Se aplica a IIS 7+

Cuando un cliente visita una página web, el explorador realiza varias solicitudes para descargar toda la página. Para cargar la página, el navegador puede iniciar conexiones separadas para cada elemento, como imágenes. Al habilitar la opción “HTTP keep-alive”, el servidor mantiene la conexión abierta para estas múltiples solicitudes, lo que aumenta el rendimiento del servidor y el tiempo de respuesta.

Enable HTTP keep-alive

Siga los pasos que se indican a continuación para habilitar la opción HTTP keep-alive para un sitio web o una aplicación:

  1. Vaya al Administrador de IIS
  2. Haga clic en el sitio web o en la aplicación que desea habilitar “HTTP keep-alive” for
  3. Haga doble clic en “HTTP Response Headers
  4. Haga clic en “Set Common Header” en el panel “Actions
  5. Seleccione la opción “Enable HTTP keep-alive
  6. Haga clic en “OK

Si la aplicación está causando una carga de CPU elevada debido al uso incorrecto del objeto HttpClient,  desproteger esta publicación: Alta carga de CPU en el High CPU load in IIS web server caused by HttpClient.

Cache-control header

Se aplica a IIS 7+

Cuando un cliente visita una página web por primera vez, el servidor web procesa la solicitud y se envía una respuesta a través de la red. Si no se configura el almacenamiento en caché, se ejecutan los mismos pasos que podrían llevar mucho tiempo si la respuesta no ha cambiado (no hay ninguna actualización para el sitio web). Si se configura el almacenamiento en caché, el cliente usará su propia caché para visitar el sitio web, lo que mejora significativamente el tiempo de respuesta. También mejora el rendimiento del servidor, ya que el servidor no atendió la solicitud.

El control de caché es un HTTP header. Además de los equipos cliente, este encabezado también se utiliza CDN, equilibradores de carga y servidores proxy. Este encabezado tiene una configuración que indica cuánto tiempo deben permanecer los activos en la memoria caché.

 Enable Cache-control Header

Siga los pasos que se indican a continuación para habilitar el encabezado de control de caché para un sitio web o una aplicación:

  1. Vaya al IIS Manager
  2. Haga clic en el sitio web o en la aplicación para la que desea habilitar el encabezado de control de caché
  3. Haga clic en ” Set Common Header ” en el panel “Actions
  4. Seleccione la opción “Expire Web content
  5. Seleccione “After“. Introduzca un valor. El valor que introduzcas depende por completo de la frecuencia con la que actualices tu contenido. Por ejemplo, si lo actualiza semanalmente, asegúrese de que el valor no supere los 7 días.
  6. Haga clic en “OK

Idle time-out action

Se aplica a IIS 8.5+

Una solicitud en IIS se controla mediante un proceso de trabajo (w3wp.exe). Cada grupo de aplicaciones tiene uno o varios procesos de trabajo. De forma predeterminada, si un proceso de trabajo está inactivo (no se reciben solicitudes) durante 20 minutos, se termina (acción de tiempo de espera inactivo). Cuando llega una nueva solicitud después de finalizar un proceso de trabajo, el usuario experimenta el ciclo de spin-up que consume recursos.  

Al establecer la acción de tiempo de espera inactivo en “Suspend”,puede evitar que los procesos de trabajo finalicen después de alcanzar el umbral de tiempo de espera inactivo. Teóricamente, mejora el rendimiento del servidor web porque un proceso de trabajo no tendrá que ir al proceso de inicio, lo que significa que el usuario accederá al sitio casi al instante. En la práctica, la opción “Suspender” puede no ser ideal para su aplicación si tiene un tráfico alto o está utilizando una gran cantidad de memoria:

  • High-traffic applications tendrán visitantes constantemente para que el proceso de trabajo permanezca activo. Los sitios que aprovechan la opción “Suspender” son los que tienen 20 visitantes o menos por día. Para tomar decisiones sobre esta opción, compruebe sus patrones de tráfico. Si las visitas tienen lapsos de tiempo superiores al valor de tiempo de espera (20 minutos de forma predeterminada), es una buena idea habilitar la opción “Suspender”. Por favor, echemos un vistazo a este artículo para ver un ejemplo.
  • Las aplicaciones que utilizan una gran cantidad de memoria no son buenas candidatas para la opción “Suspender” porque el equipo escribe los datos utilizados por el proceso de trabajo en el disco. Dado que el tamaño de los datos es grande, el costo de suspensión es mayor que la terminación.

Set Idle Time-out Action to “Suspend”

Siga los pasos que se indican a continuación para establecer la acción de tiempo de espera de inactividad en “Suspender”:

  1. Vaya al IIS Manager
  2. Haga clic en “Application Pools
  3. Seleccione el grupo de aplicaciones que utiliza el sitio web para el que desea cambiar la acción de tiempo de espera inactivo
  4. Haga clic en “Advanced Settings” en el panel “Actions
  5. Seleccione “Suspend” en la lista “Idle Time-out Action

Dynamic compression

Se aplica a IIS 7+

IIS comprime el contenido estático (imágenes, archivos CSS, archivos HTML, etc.) de forma predeterminada para reducir el ancho de banda utilizado para las solicitudes. Al habilitar la compresión para contenido dinámico como ASP.NET páginas, también puede ahorrar ancho de banda para contenido dinámico. Esto se traduce en la reducción del tiempo de respuesta y la mejora del rendimiento del servidor web. Sin embargo, habilitar la compresión dinámica agrega extra load to CPU (aproximadamente un 5% de sobrecarga de CPU).

Enable Dynamic Compression

Esta función debe instalarse primero antes de usarla. En el Administrador del servidor, asegúrese de que “Dynamic Content Compression” está instalado. Para Windows Server 2008 y Windows Server 2008 R2, consulte las instrucciones de este vínculo.

Una vez que se asegure de que la compresión dinámica está instalada, siga los pasos a continuación para habilitarla:

  1. Vaya al IIS Manager
  2. Haga clic en el sitio o la aplicación para la que desea habilitar la compresión dinámica
  3. Haga doble clic en “Compression
  4. Seleccione “Enable dynamic content compression
  5. Haga clic en “Apply

Other options

Queue length, enable 32-bit applications

Longitud de la cola

Los grupos de aplicaciones tienen una configuración denominada “Queue Length”. El valor de esta configuración especifica cuántas solicitudes HTTP.sys puede poner en cola, que es un componente de modo kernel que administra y redirige las solicitudes.

La longitud de cola predeterminada es 1000 que es suficiente para la mayoría de los servidores web. Si el servidor web necesita poner en cola más de 1000 solicitudes, IIS comienza a rechazar solicitudes y registra el error 503 Service Unavailable.  No hay ninguna recomendación y fórmula para calcular el valor óptimo. Se recomienda supervisar el tamaño de la cola y aumentar este valor solo si el tamaño se aproxima a 1000 (valor predeterminado).

  1. Vaya al IIS Manager
  2. Haga clic en “Application Pools
  3. Seleccione el grupo de aplicaciones que utiliza el sitio web para el que desea cambiar la acción de tiempo de espera inactivo
  4. Haga clic en “Advanced Settings” en el panel “Actions”
  5. Seleccione “Queue Length” en la lista y cambie el parámetro a “1000”

Habilitar aplicaciones de 32 bits

Si el uso de memoria es un problema en el servidor web, considere la posibilidad de habilitar esta opción en la configuración del grupo de aplicaciones. Dado que las aplicaciones de 32 bits utilizan menos memoria que las aplicaciones de 64 bits, habilitar esta opción reduce el uso de memoria.

Cancel idle time-out

  1. Vaya al Administrador de IIS
  2. Haga clic en Grupos de aplicaciones (a la izquierda)
  3. Haga clic derecho en la aplicación 
  4. Seleccione “Establecer valores predeterminados del grupo de aplicaciones…”
  5. Cambie el valor de “Tiempo de espera inactivo (minutos)” de 20 a 0
  6. Haga clic en “aceptar”

Was this article helpful?