Monit optim iis6_2

219 visualizaciones

Publicado el

Publicado en: Educación, Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
219
En SlideShare
0
De insertados
0
Número de insertados
3
Acciones
Compartido
0
Descargas
0
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Monit optim iis6_2

  1. 1. La optimización de la configuración de nuestro servidor puede ser un factordecisivo en la consecución de un buen rendimiento del sistema. Teniendo en cuenta que muchos usuarios no están dispuestos a esperar más queunos segundos a que se les muestre una página web, o que un error HTTP puede minarla confianza en un sitio web dedicado al comercio electrónico, un buen tiempo derespuesta y un alto grado de fiabilidad son factores tan importantes como el propiodesarrollo de los contenidos de un servidor. La monitorización de distintos parámetros del sistema y el estudio de larespuesta del servidor ante situaciones de estrés nos permitirán analizar la configuraciónvigente y los aspectos en los que pueda mejorarse. El modo de aislamiento en el que se ejecuta IIS es clave, tanto desde el punto de vista de la programación de páginas dinámicas, como de la configuración del servidor. Modo aislado de IIS 5: el modo de aislamiento alto (high) de aplicaciones incurre en una considerable penalización en el rendimiento debido a los costosos mecanismos RPC para la comunicación entre procesos. Modo de aislamiento de procesos de trabajo: A la mejora arquitectural que suponen los grupos de aplicaciones y los procesos de trabajo se unen sus características de reciclaje, tiempo de espera de inactividad, limitación de uso de CPU, web gardens, monitorización de estado, protección contra errores rápidos, o tiempos límite de inicio y finalización, que nos brindan multitud de parámetros y opciones con los que ajustar al máximo el rendimiento y la fiabilidad de nuestro servidor. En cualquiera de los dos casos, podemos beneficiarnos de características como limitación del número de conexiones y del ancho de banda, tiempos de espera, compresión HTTP o conexiones HTTP abiertas. En la configuración de los grupos de aplicaciones se especifican las normas de reciclaje de los procesos de trabajo según criterios de: Tiempo transcurrido Solicitudes atendidas Hora del día Memoria utilizada
  2. 2. El reciclaje puede ocurrir además con o sin solapamiento: por defecto, IIS generará los procesos de trabajo de reemplazo antes de que desaparezcan los existentes para que no se produzca pérdida interna de servicio; pero puede no ser así, por ejemplo debido a ausencia de recursos de memoria o CPU, o a que un proceso de trabajo se ha quedado bloqueado. Si programamos el reciclaje a una hora concreta (por ejemplo durante una ventana de mantenimiento), debemos tener en cuenta el consumo de recursos que supone. En el caso de un web garden con múltiples procesos de trabajo, puede ser mejor opción seguir un criterio de número de solicitudes atendidas. Si tenemos aplicaciones con fallos que producen bloqueos con el tiempo, se pueden establecer puntos temporales de reciclaje a lo largo del día. En el caso de aplicaciones con pérdidas de memoria, el mejor criterio puede ser el de memoria empleada por el proceso de trabajo. No existiendo un criterio único universal, la configuración óptima dependerá denuestra situación y de las aplicaciones que estamos gestionando. Ajustar el tiempo de espera de inactividad puede ayudar a liberar recursos que no están siendo utilizados, por ejemplo si hemos optado por una distribución de aplicaciones en muchos grupos de aplicaciones, cada grupo tiene asignado al menos 1 proceso de trabajo. Podemos rebajar el tiempo predeterminado de 20 minutos, por ejemplo en grupos de aplicaciones con peticiones poco frecuentes. En cualquier caso, debemos procurar que este parámetro no sea inferior al tiempo de espera de inactividad de las propias aplicaciones (ASP, PHP o ASP.net), ya que de lo contrario pueden producirse pérdidas de datos y servicios. La cola de peticiones (que nutre HTTP.sys) de un grupo de aplicaciones, tiene una capacidad predeterminada de 1000 peticiones. Si la cola está llena, el servidor contestará a las peticiones entrantes con un mensaje de HTTP 503 Servicio no disponible. En una cola con excesiva capacidad, se acumularán las peticiones, dando a los usuarios sensación de lentitud en el servicio. Si no podemos permitirnos asignar más procesos de trabajo al grupo de aplicaciones, puede ser preferible un mensaje de Servicio no disponible para que el usuario intente acceder posteriormente.
  3. 3. El Web Administration Service puede controlar la salud de los procesos de trabajo haciéndoles un ping a intervalos regulares de tiempo. Si el proceso de trabajo no contesta, IIS puede realizar dos acciones: Reciclar el proceso, terminándolo y sustituyéndolo por otro. Aislarlo, manteniéndolo en memoria, pero sin atender peticiones (crea un proceso huérfano), y generar otro proceso de trabajo para sustituirlo. Para esto, es necesario configurar algunos parámetros de la Metabase: OrphanWorkerProcess: debe tomar el valor TRUE (es false de forma predeterminada). OrphanActionExe: indica el ejecutable que se lanzará cuando se cree un proceso huérfano. OrphanActionParams: permite pasar parámetros al ejecutable indicado por OrphanActionExe. Estos parámetros se pueden configurar tanto a nivel de todos los grupos deaplicaciones (/LM/W3SVC/AppPools) como dentro de cada grupo de aplicacionesparticular (/LM/W3SVC/AppPools/nombre_del_grupo_de_aplicaciones). Hay que tener en cuenta que los procesos huérfanos pueden acumularse y consumir recursos de memoria, luego no conviene habilitar esta opción a menos que realmente se vaya a hacer un seguimiento de estos procesos y a liberar los recursos que emplean una vez se hayan analizado. Una manera de conseguir esto es utilizando las Debugging Tools, disponibles en el sitio web de Microsoft. Instalando estas herramientas en nuestro sistema, dispondremos de un mecanismo para volcar al disco duro la memoria de un proceso huérfano para su posterior estudio, y eliminar el proceso. Suponiendo que hemos instalado las Debugging Tools en C:debuggers, crearíamos en ese directorio el archivo huerfano.cmd, con el siguiente contenido:@if "%_echo%"=="" echo offsetlocalset WORKINGDIR=c:debuggersset FILENAME=%WORKINGDIR%crash.dmpset LOG=%WORKINGDIR%log.txtset COMMAND=c:debuggerscdb.exe -c ".dump /o /mhf /u %FILENAME%;q" -p %1echo %COMMAND% > %LOG%%COMMAND%Endlocal Después, asignamos los siguientes valores a los parámetros de la Metabase: OrphanWorkerProcess= TRUE OrphanActionExe= C:Debuggershuerfano.cmd OrphanActionParams= %%1%%
  4. 4. De esta manera, cada vez que en los grupos de aplicaciones configurados- surjaun proceso de trabajo huérfano, volcaremos a disco la memoria del proceso y loterminaremos. Mantenimiento de conexiones HTTP abiertas. Compresión HTTP. Límite de conexiones simultáneas. Tiempo de espera de la conexión. Límite de ancho de banda.En diversas ramas del Registro de Windows se pueden configurar múltiplesvalores de parámetros que afectan al rendimiento de IIS 6 relacionados convarios aspectos como gestión de cachés, registros y conexiones.Nota: ver archivo complementario IIS 6 - Global Registry entries.pdfMemoria RAM: por lo general, la ampliación más rentable en cuanto acomponentes físicos del servidor, es la memoria RAM.Maximizar el rendimiento para aplicaciones de red: por defecto, Windows 2003se instala favoreciendo el rendimiento para compartir archivos. Podemoscambiar este parámetro en Propiedades de la Conexión de red > Propiedades deCompartir impresoras y archivos para redes Microsoft.Desfragmentación de discos: es conveniente desfragmentar periódicamente losdiscos duros del servidor para optimizar el rendimiento del subsistema dearchivos.Archivo de paginación: establecer desde el principio un tamaño fijo suficientepara el archivo de paginación, de manera que se cree contiguo y no se fragmentecon cada ampliación automática.Evitar aplicaciones CGI: utilizar extensiones ISAPI de servidor para no incurriren la penalización de ejecución intrínseca al esquema de las aplicaciones CGI.Evitar el uso de FTP aislado: en el caso de tener muchos (cientos) de usuarios,gestionar todos los directorios asociados a las cuentas supone una cargaconsiderable para el servidor. Si esta configuración es necesaria, dedicar si esposible un servidor en exclusiva a esta tarea.No abusar de los registros: el registro de actividad de un servidor con cientos omiles de sitios web puede ocupar un espacio en disco y generar un volumen deactividad considerables. Si es preciso, habilitar el formato binario de losarchivos de registro asignando al parámetro CentralBinaryLoggingEnabled de laMetabase el valor True.
  5. 5. Los archivos de registro se generarán entonces en binario con laextensión *.ibl (Internet Binary Log) y en un solo archivo se registrará toda laactividad del servidor. Esto también puede ser útil en el caso de un servidor quehospede multitud de sitios web a la hora de generar informes estadísticos deactividad, ya que se concentra toda la información en un punto en lugar de encientos o miles de archivos.Evitar el registro remoto: aunque la posibilidad de que los archivos de registro sealmacenen en una unidad de red ofrece la ventaja de un repositorio de registrounificado, si la conexión del servidor con el punto remoto de almacenamiento noes buena puede resentirse el rendimiento. Además, la información viaja a priorisin encriptar, lo cual puede ser no deseable, y aunque pueda encriptarse el tráficocon IPSec, la encriptación siempre es una tarea que demanda CPU.Deshabilitar la indexación: en aquellos sitios web en los que no se empleenpáginas de búsqueda en el contenido, es conveniente deshabilitar la indexaciónpara liberar la CPU de una tarea no productiva.La herramienta que proporciona Windows 2003 para monitorizar el sistema seejecuta desde Inicio > Herramientas administrativas > Rendimiento.Está formado por: Monitor de sistema: muestra gráficamente información de múltiples parámetros del sistema. Registros y alertas de rendimiento: permite registrar la información monitorizada en archivos para su posterior análisis y la definición de mecanismos ante situaciones de alerta según los valores alcanzados por determinados parámetros.Otras herramientas que podemos emplear son: Administrador de tareas: nos permite ver las aplicaciones en ejecución, los procesos cargados en memoria y los recursos que consumen y diversos datos de rendimiento y nivel de saturación del sistema. Monitor de red: mayormente empleado para monitorizar conexiones y servicios de red y para generar estadísticas de uso de la red. Microsoft Web Application Stress Tool (WAST): una herramienta para someter a un servidor a pruebas de rendimiento simulando peticiones de clientes en un entorno controlado.Analizar el servidor ante cargas de trabajo controladas nos permitirá descubrirlos cuellos de botella en nuestro esquema, que son limitaciones en laconfiguración que afectan al rendimiento.Estas limitaciones pueden darse tanto en la parte hardware (CPU, memoria,conexión de red, velocidad del subsistema de almacenamiento) como en elsoftware (aplicaciones, bases de datos ).
  6. 6. Las acciones que se deban emprender pueden actuar directamente sobre la partecuello de botella (añadir más CPUs o memoria RAM, revisar el código de lasaplicaciones o emplear sistemas gestores de bases de datos más rápidos), o bienajustando la configuración de IIS.Es importante modificar un parámetro cada vez y analizar las consecuencias dedicha modificación.Muchas veces, deshacer un cuello de botella nos revela otro: traslada elproblema a otra parte, aunque se trata de ir mejorando el rendimiento en cadapaso.Una vez monitorizado y optimizado el servidor en un entorno controlado, sedebe seguir el proceso en el entorno de producción: esto nos permitirá tener enperspectiva las posibles exigencias de nuestro servidor de cara a mantener elrendimiento conforme vayan aumentando las peticiones.Cuando se monitorice el sistema, siempre deben incluirse contadores de las 4áreas principales: Memoria Procesador Disco RedMBytes disponibles (available Mbytes): debe estar por encima de 20.Bytes de caché (Cache bytes): si empieza a disminuir, IIS puede estarquedándose sin memoria.Bytes comprometidos (committed bytes): son los bytes asignados en la memoriavirtual. Se deben mantener por debajo del 75% de la memoria virtual.Páginas/s (Pages/sec): errores de página que provocan lecturas o escrituras depágina en disco. Es un indicador primario del tipo de errores que causan retrasoen todo el sistema. Debe mantenerse por debajo de 20. Si toma un valor elevado(>= 80) debe añadirse más memoria RAM.Bytes de bloque no paginado (Pool nonpaged bytes): tamaño del área lamemoria del sistema (memoria física usada por el sistema operativo) paraobjetos que no se pueden escribir en el disco, pero deben permanecer en lamemoria física tanto tiempo como estén asignados. Un aumento paulatino a lolargo del tiempo puede indicar una fuga de memoria debida a programacióndefectuosa.
  7. 7. % de tiempo de procesador (% Processor Time): si se mantiene habitualmenteelevado por encima del 80%-, pero los indicadores de red y de disco son bajos,puede indicar un cuello de botella en el procesador.% Tiempo de disco (% Disk time): mantener tan bajo como sea posible. Un valorelevado indica que se debe optimizar la utilización del disco (particionamientoadecuado, desfragmentación ) o adquirir unidades de disco más rápidas.Media de bytes/transferencia (Avg. Disk Bytes/Transfer): debe mantenerse lomás alto posible.Long. media de la cola de disco (Avg. Disk Queue Length): debería ser <= 4.Total de bytes/s (Bytes Total/sec): comparar con el ancho de banda de laconexión de la tarjeta de red para averiguar si se está produciendo un cuello debotella en este subsistema.Sistema: Longitud de la cola del procesador (Processor Queue Length): si de forma permanente muestra un valor >= 2, puede ser síntoma de un cuello de botella en el procesador.Archivo de paginación: % Uso (% Usage): el tamaño del archivo de paginación debe ser suficiente (de 1,5 a 2 veces el tamaño total de la memoria RAM del sistema). Si este porcentaje es elevado continuamente, el sistema necesita más memoria RAM.Servicio Web: Total de bytes/s. (Bytes Total/Sec): debería ser lo más alto posible.Memoria caché del servicio Web: Porcentaje de aciertos en la memoria caché de archivos (File Cache %): muestra la frecuencia con que IIS encuentra archivos en la caché. Si es un valor bajo, se puede considerar rediseñar las aplicaciones buscando mejorar este aspecto. Aciertos de la memoria caché de archivos (File Cache Hits): debe ser lo más alto posible si se tiene mucho contenido estático, pero puede ser bajo si el valor de Núcleo: aciertos de caché de URI % (Kernel: URI Cache Hits %) es elevado.
  8. 8. Páginas Active Server: Tiempo de espera de petición (Request Wait Time): tiempo en milisegundos de espera de la petición más reciente en la cola. Debe ser bajo. Nº de peticiones en la cola (Requests Queued): debe mantenerse bajo. Tener en cuenta el límite de la cola del grupo de aplicaciones correspondiente. Nº de peticiones/s (Requests/Sec): si se aprecia un descenso de este parámetro en situaciones de alta demanda, puede haber un cuello de botella en la aplicación.

×