Support Tools
Support Tools Extension se utiliza para operaciones de diagnóstico en ThingWorx, como recopilar volcados de subprocesos, supervisar el rendimiento y volcar pilas.
Ubicación
Esta herramienta está disponible en support.ptc.com en Descargar software > Pedir o descargar actualizaciones de software > ThingWorx Foundation > Versión 8.5 > ThingWorx Support Tools > Most Recent Code > ThingWorx-Support-Tools--<versión>.
Utilización de la extensión
Tras importar la extensión a ThingWorx, se crean las siguientes entidades:
SupportTools.Template: plantilla de cosa que contiene los servicios de diagnóstico.
SupportTools.Entity : instancia de cosa de Support Tools que proporciona acceso a los servicios de diagnóstico.
SupportTools.Repository: almacén de ficheros en el que Support Tools supervisa y genera ficheros.
La extensión proporciona servicios para permitir las siguientes operaciones de diagnóstico:
Permite grabar el estado de un montón de máquina virtual Java en el disco (volcado de montón).
Permite grabar el estado de un subproceso de máquina virtual Java en el disco (volcado de subprocesos o seguimiento de pila).
Permite crear un proceso de guardián en el servidor ThingWorx que se puede utilizar para activar cualquiera de los eventos anteriores en situaciones en las que ThingWorx Composer no responde.
Para activar un volcado de subprocesos o un seguimiento de pila mediante el guardián:
Cree un fichero vacío denominado runstacktrace en el directorio /ThingworxStorage/repository/SupportTools.Repository.
Los volcados de subprocesos se seguirán escribiendo en el disco cada 30 segundos (por defecto) hasta que este fichero se vuelva a borrar.
Para activar un volcado de montón mediante el guardián:
Cree un fichero de texto vacío denominado dumpheap en el directorio /ThingworxStorage/repository/SupportTools.Repository, sin extensión.
El volcado de montón se producirá una vez en la siguiente verificación del guardián. El guardián del volcado de montón se desactiva hasta el siguiente reinicio del servidor.
Para detener un volcado de subprocesos o un seguimiento de pila mediante el guardián:
Borre el fichero denominado runstacktrace en el directorio /ThingworxStorage/repository/SupportTools.Repository.
Utilice el servicio StopDiagnosticWatchdog.
Servicios de volcado de montón
Por lo general, un volcado de montón es útil en las siguientes situaciones:
Problemas de memoria en los que se sospecha que hay una fuga
Servidor bloqueado
El volcado de montón de Java en el disco es una operación costosa y pondrá el servidor ThingWorx en un estado sin respuesta mientras se realiza una recolección completa de elementos no utilizados y el montón se vacía en el disco. Este proceso puede tardar mucho tiempo en completarse para un montón de JVM de gran tamaño (entre 10 y 30 minutos).
Están disponibles los siguientes servicios de volcado de montón:
SetHeapDumpFlag: para impedir que el montón se vuelque accidentalmente, Support Tools Extension requiere que el servicio SetHeapDumpFlag se ejecute antes que el servicio DumpHeap para verificar que el usuario desea volcar el montón en el disco. Este servicio permite definir un señalizador interno que activa el servicio DumpHeap. Este señalizador no persiste en los reinicios del servidor, de modo que si se reinicia el servidor ThingWorx, el servicio SetHeapDumpFlag se debe volver a ejecutar. El señalizador interno que activa el servicio DumpHeap se puede desactivar ejecutando el servicio ClearHeapDumpFlag.
ClearHeapDumpFlag: permite despejar el señalizador interno que activa el uso del servicio DumpHeap desactivando el servicio hasta que el servicio SetHeapDumpFlag se vuelva a ejecutar.
DumpHeap: para impedir que los volcados de montón accidentales puedan bloquear el servidor durante unos minutos mientras se ejecutan, este servicio solo se puede ejecutar después de que se haya ejecutado el servicio SetHeapDumpFlag. Este servicio indica a JVM que realice lo siguiente:
Volcar el estado del subproceso actual en el disco (escrito en /ThingworxStorage/repository/SupportTools.Repository/stacktrace, incorporándolo al fichero si está presente).
Volcar el estado del montón de JVM actual en el disco (escrito en <TomcatDirectory>/logs/heapdump.hprof, sobrescribiendo un fichero existente si está presente).
* 
El volcado del montón no se escribe en el almacén por diseño. Debe comprimirse fuera de las carpetas de ThingWorx.
Servicios de volcado de subprocesos (seguimientos de pila)
DumpAllThreads: permite escribir el estado del subproceso actual de JVM en el disco. Por defecto, los seguimientos de pila se escriben en /ThingworxStorage/repository/SupportTools.Repository/stacktrace. Si el fichero ya existe, el nuevo volcado de subprocesos se incorporará al final del fichero. Un volcado de subprocesos/seguimiento de pila consta de:
Fecha y hora en que se ha recopilado el subproceso.
Identificadores, estados de subproceso y pilas de llamadas a subproceso para cada subproceso activo en la JVM.
Operaciones del guardián
El guardián de diagnóstico es un proceso pequeño que se ejecuta en segundo plano en el servidor ThingWorx e inspecciona si hay ficheros de activador en el sistema de ficheros. No es necesario detener, iniciar o ajustar este proceso, a menos que lo aconseje el soporte técnico de PTC.
Este proceso se inicia automáticamente al reiniciar ThingWorx y proporciona las siguientes ventajas:
La capacidad de generar volcados de subprocesos o seguimientos de pila automáticamente a intervalos regulares.
La capacidad de activar un volcado de subprocesos o un volcado de montón cuando Composer no responde o no está accesible.
Están disponibles los siguientes servicios del guardián:
GetWatchdogInterval: permite devolver el intervalo actual entre verificaciones del guardián o -1 si el guardián no se está ejecutando.
SetWatchdogInterval: permite cambiar el intervalo del guardián a un valor nuevo en segundos. El intervalo por defecto es 30 segundos. El nuevo intervalo se aplicará después de la siguiente verificación del guardián.
StartDiagnosticWatchdog: permite iniciar el subproceso del guardián de diagnóstico cuando está detenido.
StopDiagnosticWatchdog: permite detener el subproceso del guardián de diagnóstico cuando se inicia.