Performance test fallan sobre Azure Web Apps
19 Dec 2018 · 2 mins.El otro día realizando unas pruebas de rendimiento sobre una api REST desplegada en una Azure Web App, me encontré que todas las request del test habían fallado. Que raro, porque si ejecuto una de ellas desde el navegador funciona, en cambio todas habian sido rechazadas con el mismo error:
An existing connection was forcibly closed by the remote host.
Vamos a ver como reproducir el problema y comentamos las soluciones.
Reproduciendo el problema:
Desde Visual Studio tengo generado un fichero .webtest, para poder realizar diferentes llamadas sobre los endpoints de mi API rest.
Algo normal hasta aquí. El problema me lo encontre por dos vías.
-
Ejecutando el fichero desde la opción Performance Test del App Service en Azure.
-
Ejecutando desde Visual Studio apuntando hacia la web API desplegada en Azure.
Desde VSTS, el ahora llamado Azure DevOps, también obtendremos el mismo error.
La causa
El problema reside la configuración de seguridad TSL que tengamos establecida. Si nuestra Web App tiene configurado una versión superior a la 1.0 fallará y nos dará el error An existing connection was forcibly closed by the remote host.
Te comento dos posibles soluciones:
Soluciones
Solución 1:
Podemos establecer la Minimum TLS Version como 1.0 y nos funcionará tanto si ejecutas el test desde Visual Studio como desde Azure. De hecho, esta es la opción para que funcione nuestros Performance Test ejecutados desde las opciones de Azure WebApp Azure y Azure DevOps.
Solución 2:
Si no queremos cambiar nuestro TSL Version, a día de hoy desde Azure no tenemos una solución. Pero podemos cambiar nuestro fichero .webtest para que la ejecución nos funcione desde Visual Studio. Para ello tenemos que crear un Web Test Plug-ins. Agregamos el siguiente fichero de código al proyecto:
Después añadimos el plugin en nuestro webtest:
En la ventana nos debería aparecer nuestro plug-in TSLPlugin, sino aparece compila y vuelve a mirar.
Lo seleccionamos, aceptamos y veremos que nos aparecerá una nueva carpeta llamada Web Test Plug-ins que contendrá nuestro TSLPlugin.
Ahora si ejecutamos el web test todo debería funcionar perfectamente.
Saludos!
David