performance - Problema de escalado de rendimiento WebAPI de IIS 7.5
jmeter asp.net-web-api2 (1)
Yo recomendaría ir por los próximos pasos:
Verifique dos veces el estado de la máquina JMeter, si la máquina JMeter no tiene suficientes recursos, la ejecución puede detenerse debido a colecciones de basura en JVM o al intercambio en los niveles del sistema operativo. Además, la configuración predeterminada de JMeter solo es adecuada para el desarrollo y la depuración de pruebas, debe ajustar al menos algunos parámetros de JVM antes de ejecutar la prueba. Referencias
- Vuelva a ejecutar su prueba con una herramienta de perfilización de telemetría en el lado de IIS, revise herramientas como dotTrace o ANTS , tal vez algo esté mal con su código de aplicación.
Tengo problemas con los tiempos de respuesta enriquecidos con una solución WebAPI en IIS. Genero carga usando un plan de prueba JMeter simple, ejecutándose en mi máquina de desarrollo. Mi plan de prueba repite 15 llamadas estáticas usando quince hilos. La carga es de aproximadamente 90 000 solicitudes durante 7 minutos. El rendimiento es de alrededor de 203 requests per second
.
Durante la subida de hilo, donde JMeter está aumentando la carga, los tiempos de respuesta comienzan a contener picos que continúan durante toda la prueba. La máquina y la aplicación realmente no parecen romper a sudar: la carga en la CPU es de aproximadamente 30-40%
, por lo que no está ni cerca de saturada. La aplicación no devolvió un solo error durante toda la prueba.
Los detalles sobre la aplicación y la máquina:
- La aplicación es una solución .Net 4.6 WebAPI. El caché está en la memoria en la máquina misma.
- Alojado en IIS 7.5, en una máquina
4CPU /4GB RAM
- Grupo de aplicaciones de canal integrado (.Net 4) utilizando un proceso de trabajo
- El modelo de proceso está configurado en configuración automática en el archivo
machine.config
.
Lo que intenté hasta ahora para resolver este problema:
- Elimine la influencia de la red y otra infraestructura ejecutando las pruebas en diferentes máquinas y ubicaciones. Incluso en la máquina misma con localhost en las llamadas.
- Aumentó el "límite de subprocesos ASP por procesador" de 25 a 100 (el máximo)
- Aumentar el número de procesos de trabajo a 4
- Deshabilite el registro de IIS por completo
- Habilitar y deshabilitar la compresión de contenido dinámico
Con suerte, alguien podrá señalarme en la dirección correcta. ¡Gracias!