tag route net form for asp asp.net performance scalability httphandler

route - Sitio ASP.NET de alto rendimiento(> 1000 solicitudes/segundo)



net core asp route id (2)

Esta es una muy buena pregunta. He notado lo mismo una vez que te metes en el rango de tiempo de respuesta de un milisegundo, la sobrecarga de ASP.NET comienza a ser notable. Puedo confirmar tu observación.

Lo que he hecho con éxito es descubrir qué HttpModules están registrados (utilizando el Administrador de IIS) y deshabilitarlos de todos los que posiblemente pueda eliminar. La tubería estándar de ASP.NET tiene muchos módulos y funciones configuradas.

Si necesita el máximo rendimiento, por supuesto, podría usar una pequeña biblioteca de servidores HTTP y deshacerse de casi todos los gastos generales de esa manera. Esto sería tan increíblemente rápido.

Estoy escribiendo una API de Json ASP.NET de alto rendimiento con pronto> 1000 Request / Second. Toda mi lógica y procesamiento se realiza en un IHttpHandler. Medí a través de la clase de cronómetro y el controlador finaliza una solicitud en aproximadamente 0,1 - 0,5 milisegundos.

Pero parece que IIS y / u otros HTTPHandlers (¿Módulos?) Están quitando mucho rendimiento. ¿Puedo medir eso de alguna manera? ¿Cuánta sobrecarga producirá una solicitud en IIS cuando se configure para el mejor rendimiento?

¿Eliminar todos esos HTTPHandlers ayudará, o existen otros trucos para acelerarlo? No necesito mucho del conjunto de características ASP.NET además de la sesión (podría incluso solucionar el problema si da un aumento significativo en el rendimiento).


Medir el rendimiento de un servidor web no es una tarea trivial. Algunas cosas a considerar:

  • Encuentra el cuello de botella real. Esto puede ser memoria, acceso a disco, almacenamiento en caché, acceso a bases de datos, latencia de red, etc. Use un generador de perfiles de memoria u otro generador de perfiles de rendimiento para averiguarlo.
  • Use WireShark para encontrar la diferencia entre la duración de la solicitud en su máquina y la duración de su código.
  • Prueba otras configuraciones. Dale a ASP.NET más memoria. Actualizar el sistema de prueba. Es decir, pasar de 8GB / 2.5GHz con 600 solicitudes / seg a 16GB / 3.0GHz puede generar 6500 solicitudes / seg. El crecimiento del rendimiento a menudo no es lineal. Ver este documento de Microsoft .
  • Considere agregar una máquina extra. Esto puede dar lugar a una actualización de rendimiento de hasta 50 o incluso más dependiendo de cómo lo configure. Ver nuevamente ese documento de MS.
  • Compruebe estos consejos por Jon Skeet . El hilo de comentarios revela algunos cuellos de botella potenciales no obvios también.

NOTA 1: conoce tus herramientas. ASP.NET ejecuta cada solicitud en su propio hilo. El intercambio de hilos es más rápido que el intercambio de procesos, pero aún requiere tiempo. Si otros manejadores toman tiempo porque están en la cadena de solicitudes, es beneficioso deshabilitarlos.

NOTA 2: uno de los objetivos secundarios originales de fue crear un sitio en ASP.NET que tuviera un gran rendimiento en un máximo de 2 servidores y pudiera manejar> 1Mln de visitantes por hora. Ellos lograron hacer eso. Creo que escribieron algunas entradas de blog en él, pero no recuerdo dónde están.