Utilización de VisualVM para supervisar incidencias de memoria
Cuando VisualVM se conecta a la solución de ThingWorx, se pueden recuperar datos en tiempo real que muestren el uso de memoria, CPU y subprocesos en la solución. VisualVM se utiliza para identificar incidencias de memoria comunes y para explorar en profundidad la causa principal del comportamiento.
Cuando la solución de ThingWorx se encuentra en buen estado, VisualVM muestra un uso de memoria y CPU estable a lo largo del tiempo. En el gráfico de la memoria utilizada se muestra una serie normal de picos. Esto se debe a que JVM utiliza la memoria disponible antes de realizar una operación de limpieza. La actividad de GC es un porcentaje insignificante (inferior al 5 %) del uso total de la CPU.
Cuando el sistema requiere más recursos, los niveles de memoria utilizados permanecen elevados durante largos períodos de tiempo. Hay una actividad de GC constante o a veces demasiado elevada como porcentaje del uso total de la CPU.
Las indicaciones gráficas del agotamiento de la memoria son similares a las métricas de memoria de otras herramientas, como el registro de GC. Cuando se utiliza VisualVM, no se obtiene una métrica específica en el nivel de JVM. Solo se proporciona una indicación visual del problema. Para identificar la causa principal de la incidencia, se debe analizar el problema detalladamente.
Cuando se detecten incidencias de memoria en VisualVM, es necesario medir cuáles son los subprocesos que utilizan la memoria con más frecuencia. Esto se verifica en la opción Sample > Memory > Per thread allocations.
* 
Los datos de muestreo de un entorno de producción tienen un impacto adicional en el rendimiento y pueden provocar que una solución lenta deje de responder por completo. En entornos de producción, se debe utilizar el muestreador como la última alternativa para obtener datos de diagnóstico.
Cuando se activa la opción del muestreador en VisualVM, se pueden verificar los subprocesos que utilizan la mayor cantidad de memoria en la solución de ThingWorx. Para ver lo que realizan estos subprocesos, detenga el muestreador, recopile el volcado de subprocesos desde la ficha Threads y busque el resultado de los nombres de subproceso superiores. Por ejemplo, en la imagen anterior, los subprocesos OOM_QueryStream realizan la búsqueda de QueryStreamEntriesWithData, lo que provoca incidencias de memoria en soluciones de ThingWorx en función de cómo se llame a este servicio.
Si hay un problema, se puede recopilar una instantánea de la solución. La instantánea permite capturar todos los gráficos y los volcados de subproceso. Estos datos se pueden proporcionar al soporte técnico de PTC para realizar un análisis adicional de la incidencia. La recopilación de una instantánea no afecta al rendimiento de la solución.
VisualVM también permite realizar operaciones de GC manualmente y recopilar volcados de montón. Estas operaciones no deben realizarse a menos que lo recomiende el soporte técnico de PTC.
Recomendación: en el caso de períodos de rendimiento lento, se recomienda inspeccionar los gráficos de memoria en VisualVM y muestrear la memoria para identificar los períodos de uso elevado.
¿Fue esto útil?