Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
net
Jeitson Guerrero Barajas
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
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.
MEMORY PROFILING
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