Artículo
· 12 hr atrás Lectura de 2 min

Usar %System.Monitor.LineByLine junto con %SYS.MONLBL para analizar vuestro código

Estoy seguro de que la mayoría de vosotros estáis familiarizados con la utilidad %SYS.MONLBL, que es crucial cuando se analizan los cuellos de botella de rendimiento del código. Permite seleccionar un número de rutinas que queréis monitorizar en tiempo de ejecución y también especificar qué proceso(s) queréis observar. PERO, ¿qué pasa si no sabéis exactamente qué proceso ejecutará vuestro código? Esto es común en muchas aplicaciones basadas en la web (CSP/REST) hoy en día. Queréis minimizar la utilización de recursos en vuestro sistema de producción que necesita análisis. Entonces, ¿qué tal si hacéis un pequeño ajuste?

  1. Definir un archivo INC con estos macros:
#define START(%level) try { ##continue 
s zzroutine=$p($view(-1,-3),"^",6) ##continue 
if ##class(%Monitor.System.LineByLine).IsActive(zzroutine)=0 { ##continue $$$ThrowOnError(##class(%Monitor.System.LineByLine).Start($lfs(zzroutine),$lfs(##class(%Monitor.System.LineByLine).GetMetrics(%level)),$lb($job))) ##continue } ##continue 
h 1 ##continue 
} catch (e) { ##continue
 d BACK^%ETN ##continue 
} 

#define PAUSE s sc=##class(%Monitor.System.LineByLine).Pause()

2. En vuestra clase o rutina, identificad el lugar que queréis monitorizar y poned estos dos macros para empezar a recopilar datos y pausar la recopilación, como en este ejemplo:

$$$START(2)   // use 1 or 2 here

// code of your application here

$$$PAUSE

Cada vez que ejecutéis este código (método de una clase o rutina), intentará iniciar %SYS.MONLBL para esta clase o rutina y proceso en particular.

Una vez que vuestro código haya terminado, simplemente podéis ir al terminal en el namespace donde se ejecuta vuestra aplicación y llamar a d ^%SYS.MONLBL. Como el macro START inició el monitor, seguirá funcionando y podréis recopilar fácilmente los datos de rendimiento, opcionalmente junto con el código fuente. ¡No olvidéis detener el monitor una vez hayáis recogido los datos!

Si necesitáis recopilar datos para más rutinas, podéis modificar fácilmente el macro START para permitir la entrada manual de la lista de rutinas a analizar.

¡Espero que encontréis útil este pequeño ajuste!

Comentarios (0)1
Inicie sesión o regístrese para continuar