Sei sulla pagina 1di 7

Taller rendimiento .

net
Jeitson Guerrero Barajas

PRUEBA DE CARGA - Resultados y análisis


Durante las pruebas se observó un consumo excesivo re procesador y memoria visto desde el
monitoreo de Windows.

Desde la prueba en visual estudio el panorama se vio de la siguiente manera:

El procesador se estaba consumiendo con unos picos muy altos al principio y hacia el final de
prueba comenzó a descender, la memoria por su parte se mantuvo con un consumo bajo.
Procesador - Memoria

En cuanto al resultado de la ejecución de la prueba de carga los resultados fueron los siguientes:

Todas las pruebas se ejecutaron satisfactoriamente en ambos escenarios, 807 pruebas para el
escenario 1 que tenía el 75% de los usuarios y 218 pruebas para el escenario 2 con el 25% de los
usuarios.

También se obtuvieron 9 errores de tipo HTTP ERROR 500 – Internal server error

Para explicar este primer punto seleccione los siguientes indicadores:

 TASK MANAGER de la máquina virtual

Este indicador me pareció importante por el monitoreo de recursos físicos de la máquina,


además quería compararlo con el de la prueba a ver si diferían en sus porcentajes de uso.

 Controller and agent


Este indicador lo seleccione para verificar el consumo sobre los recursos y validarlo contra
el TASk MANAGER de la máquina. Ya realizando la comparación se observa que aunque la
memoria de la maquina estaba casi en el tope en el TASK MANAGER, para la ejecución de
la prueba estuvo con un consumo bajo.
 Resumen de la prueba
El resumen de la prueba lo escogí para identificar el total de pruebas ejecutadas y cuantas
de esas pruebas pasaron. Para sorpresa mía cuando vi el consumo de recursos de la
maquine pensé que muchas pruebas iban a fallar, sin embargo pasaron todas.

PROFILER - Resultados y análisis


INSTRUMENTATION

De acuerdo a los resultados de las pruebas de carga me centrare en identificar el problema


visitando con el profiler las páginas que tuvieron una demora sustancial en su promedio.

La que más se demoró en promedio fue la página de Meal seguida por el HOME.

El HOT PATH fue el siguiente mostrado en la imagen, en este punto inicia la indagación sobre los
métodos y que puede estar pasando.
Primer hallazgo
El primer hallazgo lo encontramos en el método GetItems de la clase
ChefIdAjaxDropdownController se lleva todos los honores en este ranking debido a que todo el
hot path terminan referenciando a este método. Lastimosamente al ser el método tiempo
consume no me permitirá a través del análisis por INSTRUMENTACIÓN obtener otros métodos
hasta no solucionar el problema de ese metodo.

AQUÍ UNA PARTE DEL CÓDIGO

MEMORY PROFILING

El resultado con el memory profiling fue el siguiente


Hallazgo 2

Se encontró un método de búsqueda que está consumiendo muchos recursos de memoria, al


analizarlo se encontró el siguiente fragmento de código.
En este método se puede observar cómo se realiza un ciclo en el que internamente se están
realizando consultas y luego se realiza un count de los datos dentro del mismo ciclo que el más
costoso como se puede apreciar en la gráfica anterior.

ANALISIS

Análisis hallazgo 1

Como se puede notar en el fragmento de código del hallazgo 1 se están utilizando 3 foreach
anidados y para completar el panorama se realizan consultas dentro de cada ciclo para ir por los
detalles de cada ítem evaluado en cada ciclo, estamos hablando de un código completamente
ineficiente

Solución hallazgo 1

Esos ciclos anidados que aumentan la complejidad ciclomatica del método podrían ser
reemplazados por bien sea una sola consulta linq que me retorne los datos requeridos o también
se podría implementar a través de un procedimiento almacenado. Si la solución es la de construir
la consulta de linq se debería utilizar el profiler de sql server para analizar si efectivamente la
consulta generada es óptima y sino realizar los ajustes correspondientes.

Análisis hallazgo 2

Como se aprecia en el hallazgo 2 se están realizando consultas a base de datos dentro un ciclo lo
cual reduce considerablemente el performace del método, adicionalmente se realizan contadores
de datos de las consultas y todo esto para complementar información de la consulta que se hace
en la primera línea del método.
Solución hallazgo 2

La solución que le daría a este problema básicamente seria realizar una consulta optimizada que
me permita obtener los datos y de esta manera evitar dar tantas vueltas para realizar la
completitud de los datos requeridos.

 Consulta a través de linq (le realizaría la comprobación con el profiler de sql server)
 Procedimiento almacenado

Potrebbero piacerti anche