Análisis del rendimiento del trabajo de Azure Stream Analytics mediante métricas y dimensiones

Para conocer un estado del trabajo de Azure Stream Analytics, es importante saber cómo se usan las métricas y dimensiones del trabajo. Puede usar Azure Portal, la extensión Visual Studio Code Stream Analytics o un SDK para obtener las métricas y dimensiones que le interesen.

En este artículo se muestra cómo usar las métricas y dimensiones del trabajo de Stream Analytics para analizar el rendimiento de un trabajo desde Azure Portal.

El retraso de la marca de agua y los eventos de entrada pendientes son las principales métricas para determinar el rendimiento del trabajo de Stream Analytics. Si el retraso de la marca de agua del trabajo aumenta continuamente y los eventos de entrada están pendientes, el trabajo no puede mantener el ritmo del índice de eventos de entrada y generar salidas a tiempo.

Para empezar, examinemos varios ejemplos para analizar el rendimiento de un trabajo a través de los datos de métricas de retraso de marca de agua.

La falta de entrada en determinadas particiones aumenta el retraso en la marca de agua del trabajo

Si el retraso de la marca de agua del trabajo embarazosamente paralelo aumenta constantemente, vaya a Métricas. A continuación, siga estos pasos para averiguar si la causa principal es una falta de datos en algunas particiones del origen de entrada:

  1. Compruebe qué partición tiene el retraso creciente de la marca de agua. Seleccione la métrica Retraso de marca de agua y divídala por la dimensión Id. de partición. En el ejemplo siguiente, la partición 465 tiene un retraso de marca de agua alto.

    Captura de pantalla de un gráfico que muestra una división del retraso de la marca de agua por un Id. de partición para el caso de que no haya entrada en una partición.

  2. Compruebe si en esta partición faltan datos de entrada. Seleccione la métrica Eventos de entrada y fíltrela por este identificador de partición concreto.

    Captura de pantalla de un gráfico que muestra una división de eventos de entrada por un Id. de partición para el caso de que no haya entrada en una partición.

¿Qué acción adicional puede realizar?

El retraso de la marca de agua de esta partición aumenta porque no hay eventos de entrada que lleguen a ella. Si la ventana de tolerancia de llegada tardía del trabajo es de varias horas y no llegan datos de entrada a una partición, cabría esperar que el retraso de la marca de agua de esa partición siga aumentando hasta que se alcance la ventana de llegada tardía.

Por ejemplo, si la ventana de llegada tardía es de 6 horas y los datos de entrada no entran a la partición de entrada 1, el retraso de la marca de agua de la partición de salida 1 aumentará hasta que alcance 6 horas. Puede comprobar si el origen de entrada genera datos según lo previsto.

La asimetría de datos de entrada provoca un retraso elevado en la marca de agua

Como se mencionó en el caso anterior, cuando su trabajo embarazosamente paralelo tiene un retraso de marca de agua alto, lo primero que debe hacer es dividir la métrica Retraso de marca de agua por la dimensión Id. de partición. A continuación, puede identificar si todas las particiones tienen un retraso elevado en la marca de agua o solo algunos de ellos.

En el ejemplo siguiente, las particiones 0 y 1 tienen un retraso de marca de agua superior (aproximadamente de 20 a 30 segundos) que las otras ocho particiones. Los retrasos de la marca de agua de las restantes particiones siempre son constantes, oscilan entre los 8 y 10 segundos.

Captura de pantalla de un gráfico que muestra una división del retraso de la marca de agua por un Id. de partición para el caso de asimetría de datos.

Vamos a comprobar el aspecto de los datos de entrada para todas estas particiones con la métrica Eventos de entrada divididos por identificador de partición:

Captura de pantalla de un gráfico que muestra una división de eventos de entrada por un Id. de partición para el caso de asimetría de datos.

¿Qué acción adicional puede realizar?

Como se muestra en el ejemplo, las particiones (0 y 1) que tienen un retraso de marca de agua alto reciben datos de entrada significativamente más que otras particiones. A esto se le llama asimetría de datos. Los nodos de streaming que procesan las particiones con asimetría de datos deben consumir más recursos de CPU y memoria que otros, como se muestra en la siguiente captura de pantalla.

Captura de pantalla de un gráfico que muestra la utilización de recursos por parte de particiones con asimetría de datos.

Los nodos de streaming que procesan particiones con mayor asimetría de datos mostrarán un mayor uso de la CPU o de la unidad de streaming (SU). Este uso afectará al rendimiento del trabajo y aumentará el retraso de la marca de agua. Para solucionar este problema, tiene que volver a crear particiones de datos, con el fin de que todas ellas sean más uniformes.

También puede depurar este problema con el diagrama de trabajos físicos, consulte Diagrama de trabajos físicos: Identificación de los eventos de entrada distribuidos desiguales (asimetría de datos).

La CPU sobrecargada o la memoria aumenta el retraso de la marca de agua

Si en un trabajo perfectamente paralelo tiene un retraso de marca de agua en aumento, es posible que no solo suceda en una o varias particiones, sino en todas ellas. ¿Cómo confirmar que su trabajo encaja en este caso?

  1. Divida la métrica Retraso de marca de agua por id. de partición. Por ejemplo:

    Captura de pantalla de un gráfico que muestra una división del retraso de la marca de agua por un Id. de partición para el caso de sobrecarga de CPU y memoria.

  2. Divida la métrica Eventos de entrada por identificador de partición para confirmar si hay asimetría de datos en los datos de entrada para cada partición.

  3. Compruebe el uso tanto de la CPU como de la SU para ver si el uso en todos los nodos de streaming es demasiado elevado.

    Captura de entrada de un gráfico que muestra un uso de la CPU y la memoria dividido por Nombre de nodo para el caso de que la CPU y la memoria estén sobrecargadas.

  4. Si el uso tanto de la CPU como de la SU es muy elevado (más del 80 %) en todos los nodos de streaming, se puede concluir que se están procesando una gran cantidad de datos en cada nodo de streaming.

    Para comprobar aún más cuántas particiones se asignan a un nodo de streaming, compruebe la métrica Eventos de entrada. Filtre por identificador de nodo de streaming con la dimensión Nombre del nodo y divida por id. de partición.

    Captura de pantalla de un gráfico que muestra el número de particiones en un nodo de streaming para el caso de que la CPU y la memoria estén sobrecargadas.

  5. En la captura de pantalla anterior se muestra que se asignan cuatro particiones a un nodo de streaming que ocupa entre el 90 al 100 por ciento del recurso de nodo de streaming. Puede usar un enfoque similar para comprobar el resto de los nodos de streaming para confirmar que también procesan datos desde cuatro particiones.

¿Qué acción adicional puede realizar?

Podría reducir el número de particiones de cada nodo de streaming, con el fin de reducir sus datos de entrada. Para hacerlo, puede duplicar las SU para que cada nodo de streaming controle los datos de dos particiones. O bien, puede cuadruplicar las SU para que cada nodo de streaming controle los datos de una partición. Para más información sobre la relación entre la asignación de unidades de procesamiento y el número de nodos de streaming, consulte Descripción y ajuste de las unidades de streaming.

¿Qué debo hacer si el retraso de la marca de agua sigue aumentando aunque cada nodo de streaming controle los datos de una sola partición? Aumente el número de particiones de entrada para reducir la cantidad de datos de cada partición. Para más detalles, consulte Uso de la repartición para optimizar los trabajos de Azure Stream Analytics.

También puede depurar este problema con el diagrama de trabajos físicos, consulte Diagrama de trabajos físicos: Identificación de la causa de la CPU o la memoria sobrecargadas.

Pasos siguientes