Consulte el rendimiento de un despliegue en ejecución, incluido el uso de CPU, memoria e hilos de su JobManager y los TaskManagers activos. Esto le permite identificar problemas a nivel de código, como inicializaciones lentas de clases o clases que consumen recursos en exceso.
Requisitos previos
Si comparte un espacio de trabajo con otras cuentas de Alibaba Cloud o usuarios de RAM, debe otorgarles los permisos necesarios para consultar el rendimiento del despliegue. Para obtener más información, consulte Development console authorization.
Limitaciones
La consulta del rendimiento de despliegue solo es compatible con despliegues ejecutados en Ververica Runtime (VVR) 4.0.11 o versiones posteriores.
Esta función solo está disponible para despliegues en ejecución. No es posible consultar el rendimiento de despliegues históricos.
Uso de herramientas de análisis
Gráfico de llamas
Dado que un gráfico de llamas se genera a partir de muestras, es posible que no refleje la ejecución completa del programa. Utilícelo siempre junto con otras herramientas de análisis y adapte el análisis a su caso de uso específico. Por lo general, puede revisar los siguientes aspectos:
Tiempo de CPU: Las funciones que ocupan un área más ancha en la parte superior del gráfico suelen consumir más tiempo de CPU, lo que indica un posible problema de rendimiento.
Asignación de memoria: Consulte la memoria asignada por las distintas clases.
Contención de bloqueos: Compruebe si existe degradación del rendimiento causada por contención de bloqueos o interbloqueos.
ITimer: Consulte el consumo de CPU en todos los hilos dentro del mismo intervalo de tiempo.
En la pestaña Running TaskManagers del despliegue objetivo, haga clic en un TaskManager específico y seleccione la pestaña Debug. Aquí puede elegir un tipo de gráfico de llamas, establecer un intervalo de muestreo y hacer clic en Query para generar el gráfico.
-
Comprenda la estructura de un gráfico de llamas
Cada capa en un gráfico de llamas representa un nivel en la pila de llamadas. La capa inferior es el punto de entrada de la aplicación, mientras que las capas superiores representan llamadas a funciones más profundas.
-
Enfóquese en la anchura y frecuencia de los marcos
En un gráfico de llamas, la anchura de cada marco representa el porcentaje de tiempo de ejecución que tomó la función durante el muestreo. Un marco más ancho indica un mayor consumo de CPU y un posible cuello de botella. Un marco que aparece con frecuencia, aunque no sea el más ancho, indica una función llamada muchas veces, lo cual también puede causar un problema de rendimiento acumulativo.
-
Analice la posición de los marcos
La posición vertical de un marco indica el nivel en la pila de llamadas donde ocurre un cuello de botella. Un marco ancho en la parte inferior suele indicar un problema en las etapas iniciales o en la lógica principal del programa, mientras que un marco ancho en la parte superior podría señalar una función de procesamiento específica o una función de biblioteca.
-
Analice en el contexto de su código
Tras identificar un posible cuello de botella en el gráfico de llamas, analice el código correspondiente. Busque oportunidades de optimización en estas funciones críticas, como reducir iteraciones de bucles, mejorar estructuras de datos o minimizar la sincronización.
-
Ejecute pruebas de rendimiento
Después de optimizar el código, ejecute pruebas de rendimiento para verificar las mejoras. Compare los gráficos de llamas antes y después de sus cambios para confirmar que se resolvió el cuello de botella.
Si algunas partes del gráfico de llamas se muestran como "UnKnown", indica uso de métodos nativos, donde no se espera que aparezcan nombres de métodos Java. Para obtener más información, consulte Unknown.
Hilos
-
Vaya a la pestaña Debug.
-
Rendimiento del JobManager
En la pestaña Logs, haga clic en la pestaña JobManager y luego en Debug.
-
Rendimiento de los TaskManagers en ejecución
En la pestaña Logs, haga clic en la pestaña Running TaskManagers, haga clic en un valor de la columna Path, ID y luego en Debug.
-
-
En la pestaña Threads, busque el operador objetivo y haga clic en Sample en la columna Actions. Tras un periodo de muestreo, observe su pila de hilos. Por ejemplo, a continuación se muestra una pila de hilos para acceso a Gemini State.
El cuadro de diálogo Single Thread Sampling muestra los resultados, incluido un gráfico de líneas de uso de CPU y una tabla de muestras de pila. Aquí puede consultar la pila de llamadas a métodos, como
java.lang.Object.wait, en cada punto de muestreo. Haga clic en Pause Sampling para detener la recopilación de datos.
Volcado de hilos
En la pestaña Logs, haga clic en la pestaña Running TaskManagers y luego en un valor de la columna Path, ID.
-
En la pestaña Thread Dump, busque por nombre de operador y observe la pila de hilos para comprobar si está accediendo al estado. Una pila que muestra consistentemente llamadas en la ruta de acceso de Gemini o RocksDB indica esta situación.
Para encontrar el nombre de un operador y usarlo en la pestaña Thread Dump, vaya a la página de detalles del TaskManager objetivo. Puede encontrar el nombre del operador objetivo en la pestaña Status.
El panel Detail a la derecha muestra el plan de ejecución de cada operador, proporcionando nombres como
TableSourceScan,CalcySinkpara su búsqueda en el volcado de hilos.
Documentos relacionados
El servicio inteligente de diagnóstico de despliegues le ayuda a supervisar el estado de sus despliegues y garantiza la estabilidad y fiabilidad de su negocio. Para obtener más información, consulte intelligent deployment diagnostics.
Puede mejorar el rendimiento de los despliegues de Flink SQL mediante la optimización de configuraciones y consultas. Para obtener más información, consulte High-performance Flink SQL optimization techniques.