Preste atención al rendimiento del servidor IIS Diez cosas que no puede hacer

  

El rendimiento del servidor IIS está relacionado con nuestra eficiencia en el trabajo, por lo que no hay manera de obstaculizar el rendimiento del servidor IIS. Sin embargo, muchas personas seguirán cometiendo algunos errores y causarán un deterioro en el rendimiento de IIS. Ahora, vea lo que no se puede hacer. .

1. Deben asignarse y liberarse múltiples objetos.

Debe tratar de evitar el exceso de asignación de memoria, ya que la asignación de memoria puede ser costosa. La liberación de bloques de memoria puede ser más costosa porque la mayoría de los operadores de asignación siempre intentan conectar bloques de memoria liberados adyacentes en bloques más grandes. Hasta que Windows NT® 4.0 Service Pack 4.0, en el procesamiento de multiproceso, el montón del sistema generalmente funciona mal. Los montones están protegidos por un bloqueo global y no son extensibles en sistemas multiprocesador.

2. No debe considerar el uso de la memoria caché del procesador.

La mayoría de las personas saben que las fallas de páginas difíciles causadas por los subsistemas de memoria virtual son costosas y es mejor evitarlas. Pero muchas personas piensan que no hay diferencia en otros métodos de acceso a la memoria. Desde 80486, esta vista es incorrecta. Las CPU modernas son mucho más rápidas que la RAM. La RAM requiere al menos dos niveles de memoria caché. La memoria caché L1 de alta velocidad puede contener 8 KB de datos y 8 KB de instrucciones. La memoria caché L2 más lenta puede contener cientos de kilobytes de datos y códigos. Esta información se combina con el código. Juntos Una referencia a una región de memoria en la memoria caché L1 toma un ciclo de reloj, una referencia a la memoria caché L2 toma de 4 a 7 ciclos de reloj, y una referencia a la memoria principal requiere muchos ciclos de reloj del procesador. El último número pronto superará los 100 ciclos de reloj. En muchos sentidos, el almacenamiento en caché es como un pequeño sistema de memoria virtual de alta velocidad.

La unidad de memoria básica asociada con el almacenamiento en caché no es un byte sino una columna de caché. La columna de caché de Pentium tiene 32 bytes de ancho. La columna de caché alfa es de 64 bytes de ancho. Esto significa que solo hay 512 ranuras en el caché L1 para código y datos. Si se usan varios datos juntos (posición de tiempo) y no se almacenan juntos (ubicación espacial), el rendimiento será deficiente. La posición espacial de los arreglos es buena, y la lista de listas interconectadas y otras estructuras de datos basadas en punteros tienden a ser deficientes.

Empaquetar datos en la misma columna de caché generalmente mejorará el rendimiento, pero también degradará el rendimiento de los sistemas multiprocesador. Es difícil para el subsistema de memoria coordinar la memoria caché entre procesadores. Si los datos de solo lectura utilizados por todos los procesadores comparten una columna de caché con los datos utilizados por un procesador y se actualizan con frecuencia, la caché tardará mucho tiempo en actualizar la copia de la columna almacenada en caché. A este juego de ping-pong de alta velocidad a menudo se le conoce como " sache cacheo " Se pueden evitar saltos si los datos de solo lectura están en una columna de caché diferente.

La optimización del espacio para el código es más eficiente que la optimización de la velocidad. Cuanto menos código hay, menos páginas ocupa el código, lo que requiere menos configuraciones de ejecución y menos fallos de página, y menos columnas de caché. Sin embargo, algunas funciones básicas deben ser optimizadas en velocidad. Los perfiladores se pueden utilizar para identificar estas funciones.

3. Nunca almacene en caché los datos utilizados frecuentemente.

El almacenamiento en caché del software puede ser utilizado por una variedad de aplicaciones. Cuando un cálculo es caro, guarda una copia del resultado. Este es un compromiso de tiempo-espacio típico: ahorre algo de tiempo sacrificando algo de espacio de almacenamiento. Si se hace bien, este enfoque puede ser muy eficaz.

Debes cachear correctamente. Si se almacenan en caché los datos incorrectos, se perderá espacio de almacenamiento. Si cachea demasiado, habrá muy poca memoria disponible para otras operaciones. Si cachea muy poco, la eficiencia será baja porque tiene que volver a calcular los datos que se almacenaron en caché. Si los datos sensibles al tiempo se almacenan en la memoria caché durante demasiado tiempo, los datos estarán desactualizados. En general, los servidores están más preocupados por la velocidad que por el espacio, por lo que tienen más caché que el sistema de escritorio. Asegúrese de eliminar los cachés no utilizados de forma regular, de lo contrario habrá problemas al ejecutar la configuración.

4. Deben crearse múltiples hilos, cuanto más, mejor.

Es importante ajustar la cantidad de subprocesos que funcionan en el servidor. Si el subproceso está enlazado a E /S, tomará mucho tiempo esperar a que se complete la E /S; un subproceso bloqueado es un subproceso que no realiza ningún trabajo útil. Agregar subprocesos adicionales puede aumentar el rendimiento, pero agregar demasiados subprocesos degradará el rendimiento del servidor porque el intercambio de contexto será una sobrecarga significativa. Hay tres razones por las que la velocidad de intercambio de contexto debería ser baja: el intercambio de contexto es una sobrecarga, y no hay beneficio para el trabajo de la aplicación; el intercambio de contexto se queda sin ciclos de reloj valiosos; lo peor de todo, el intercambio de contexto llena el caché del procesador Para datos inútiles, reemplazar estos datos es costoso.

Hay muchas cosas que dependen de tu estructura de hilos. Un hilo por cliente es absolutamente inapropiado. Porque no es escalable para un gran número de clientes. Los intercambios contextuales se hicieron insoportables y Windows NT se quedó sin recursos. El modelo de grupo de subprocesos funcionará mejor, en el que un grupo de subprocesos de trabajo procesará una columna de solicitud porque Windows 2000 proporciona las API correspondientes, como QueueUserWorkItem.

Copyright © Conocimiento de Windows All Rights Reserved