Uso del subsistema de utilización para supervisar la ejecución lenta de los servicios
Cuando se activa el subsistema de utilización, se obtienen métricas detalladas acerca de la duración de la ejecución del servicio. Los siguientes detalles se recuperan con los servicios de este subsistema:
Tiempo que tarda un servicio en completar la ejecución (mínimo, máximo y tiempo medio)
El número de veces que se ejecuta un servicio.
Las estadísticas se registran en milisegundos a partir de la última vez que se ha reiniciado el servidor, pero pueden ser persistentes si se activa la opción Activar persistencia de estadísticas. Utilice el servicio WriteStatisticsReport para crear un fichero CSV que contenga estas estadísticas. El fichero CSV se crea en la carpeta ThingworxStorage.
Las métricas solo se recopilan después de que se haya completado un servicio. Si un servicio se ejecuta en un bucle infinito que finalmente deja el servidor inactivo, no se registra el tiempo para dicho servicio.
Se recomienda exportar y analizar los datos del subsistema de utilización para identificar los servicios de ejecución prolongada. Si se ha identificado un servicio lento, actualice los servicios para imprimir las líneas de registro. Estos registros pueden recuperar la duración de las operaciones. A veces, un conjunto específico de parámetros o una consulta específica son los responsables del funcionamiento lento. El registro de los parámetros en el script es una manera fácil y confiable de capturar estos datos. El siguiente script se puede expandir para imprimir información detallada sobre las operaciones que tardan más de 30 segundos. El script se puede actualizar aún más para imprimir parámetros de servicio u otros datos, según sea necesario:
var startTime= new Date();
// potentially slow operation
var endTime = new Date();
//calculate difference in seconds and print details only if operation takes over 30 seconds
var diff = (endTime.getTime() - startTime.getTime) / 1000 % 60;
if (diff > 30) logger.error("+++Slow operation: " + diff + "seconds "); // add any parameters or queries
¿Fue esto útil?