Estoy escribiendo una API JSON ASP.NET de alto rendimiento con pronto> 1000 solicitud/segundo. Toda mi lógica y procesamiento se realiza en un IHttpHandler. Medí a través de la clase Cronómetro y el controlador termina una solicitud en alrededor de 0,1 - 0,5 milisegundos.Sitio ASP.NET de alto rendimiento (> 1000 solicitud/segundo)
Pero parece que IIS y/u otros HTTPHandlers (¿Módulos?) Están quitando mucho rendimiento. ¿Puedo medir eso de alguna manera? ¿Cuánta sobrecarga generará una solicitud en IIS cuando se configura para obtener el mejor rendimiento?
¿Ayudará la eliminación de todos los HTTPHandlers, o hay otros trucos para acelerarlo? No necesito mucho del conjunto de características de ASP.NET además de la sesión (incluso podría dar una solución alternativa si proporciona un impulso significativo en el rendimiento).
dado que es 'nativamente' asíncrono y puede ser alojado por sí mismo (por lo que puede evitar ejecutarse en IIS), parece que valdría la pena mirar la ASP.NET Web API (incorporada a MVC4, pero también disponible independiente). Aprendí mucho sobre esto del blog de Henrik @ http://blogs.msdn.com/b/henrikn/ –
FWIW, el fraseo de la pregunta es un poco extraño para mí ya que parece mezclar latencia/ancho de banda (para usar los términos de la red).La latencia para atender una solicitud en particular no parece ser tan importante (fuera de la experiencia del usuario final, sino ortogonal a la escalabilidad) en relación con la capacidad de atenderlos de manera eficiente y concurrente. IOW, si cada solicitud requiriera 1000 ms para el servicio, pero podrías atender 2000 a la vez, igual estarías bien con eso, ¿no? –
No estoy seguro de cuánto se aplicará a la API que está creando, pero si hay algo almacenable en caché, asegúrese de hacerlo. Y si puede permanecer sin estado, probablemente pueda usar ARR y escalar si es necesario. –