Solución de problemas de rendimiento - Managed Service para Apache Flink

Amazon Managed Service para Apache Flink Amazon se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solución de problemas de rendimiento

Esta sección contiene una lista de síntomas que puede comprobar para diagnosticar y solucionar problemas de desempeño.

Si el origen de datos es una transmisión de Kinesis, los problemas de desempeño suelen presentarse como una métrica millisbehindLatest alta o creciente. En el caso de otros orígenes, puede comprobar una métrica similar que represente el retraso en la lectura del origen.

La ruta de datos

Cuando investigue un problema de desempeño con su aplicación, tenga en cuenta todo el recorrido que siguen sus datos. Los siguientes componentes de la aplicación pueden convertirse en cuellos de botella en el desempeño y crear retrasos si no se diseñan u obtienen adecuadamente:

  • Orígenes y destinos de datos: asegúrese de que los recursos externos con los que interactúa su aplicación sean correctamente obtenidos para el rendimiento que experimentará la aplicación.

  • Datos de estado: asegúrese de que su aplicación no interactúe con el almacén estatal con demasiada frecuencia.

    Puede optimizar el serializador que utiliza su aplicación. El serializador Kryo predeterminado puede manejar cualquier tipo serializable, pero puede usar un serializador más eficiente si su aplicación solo almacena datos en tipos POJO. Para obtener información sobre los serializadores de Apache Flink, consulte Tipos de datos y serialización en la documentación de Apache Flink.

  • Operadores: asegúrese de que la lógica empresarial implementada por sus operadores no sea demasiado complicada o de que no cree o utilice recursos en cada registro procesado. Asegúrese también de que su aplicación no cree ventanas deslizantes o de salto de tamaño constante con demasiada frecuencia.

Soluciones de solución de problemas de rendimiento

Esta sección contiene posibles soluciones a los problemas de desempeño.

CloudWatch niveles de supervisión

Compruebe que los niveles CloudWatch de supervisión no estén configurados en una configuración demasiado detallada.

La configuración del nivel de registro de monitoreo de Debug genera una gran cantidad de tráfico, lo que puede generar retrasos. Solo debe usarlo mientras investiga activamente los problemas de la aplicación.

Si su aplicación tiene una configuración de Parallelism alta, el uso del nivel de métricas de monitoreo de Parallelism también generará una gran cantidad de tráfico que puede provocar retrasos. Utilice este nivel de métricas únicamente cuando Parallelism sea bajo para su aplicación o cuando investigue problemas con la aplicación.

Para obtener más información, consulte Niveles de monitoreo de aplicaciones.

Métrica de CPU de la aplicación

Comprueba la métrica CPU de la aplicación. Si esta métrica supera el 75 por ciento, puede permitir que la aplicación se asigne más recursos al habilitar el escalado automático.

Si el escalado automático está habilitado, la aplicación asigna más recursos si el uso de la CPU es superior al 75 por ciento durante 15 minutos. Para obtener más información acerca del escalado, consulte la sección Administración correcta del escalado y la Escalado a continuación.

nota

Una aplicación solo escalará automáticamente en respuesta al uso de la CPU. La aplicación no escalará automáticamente en respuesta a otras métricas del sistema, como heapMemoryUtilization. Si su aplicación tiene un alto nivel de uso de otras métricas, aumente el paralelismo de la aplicación manualmente.

Paralelismo de aplicaciones

Aumente el paralelismo de la aplicación. El paralelismo de la aplicación se actualiza mediante el parámetro de la acción. ParallelismConfigurationUpdate UpdateApplication

El número máximo de KPUs de una aplicación es de 64 de forma predeterminada y se puede aumentar solicitando un aumento del límite.

También es importante asignar el paralelismo a cada operador en función de su carga de trabajo, en lugar de simplemente aumentar el paralelismo de la aplicación. Consulte Paralelismo del operador a continuación.

Registro de la aplicación

Compruebe si la aplicación registra una entrada para cada registro que se esté procesando. Escribir una entrada de registro para cada registro en momentos en que la aplicación tenga un alto rendimiento provocará graves embotellamientos en el procesamiento de datos. Para comprobar si existe esta condición, busque en los registros las entradas de registro que la aplicación escriba con cada registro que procese. Para obtener más información sobre cómo leer registros de aplicación, consulte Analizar los CloudWatch registros con Logs Insights.

Paralelismo del operador

Compruebe que la carga de trabajo de su aplicación se distribuya uniformemente entre los procesos de trabajo.

Para obtener información sobre cómo ajustar la carga de trabajo de los operadores de su aplicación, consulte Escalado de operadores.

Lógica de aplicación

Examine la lógica de la aplicación para detectar operaciones ineficientes o que no funcionen, como acceder a una dependencia externa (como una base de datos o un servicio web), acceder al estado de la aplicación, etc. Una dependencia externa también puede obstaculizar el desempeño si no funciona o no se puede acceder a ella de forma fiable, lo que puede provocar que la dependencia externa devuelva errores HTTP 500.

Si su aplicación utiliza una dependencia externa para enriquecer o procesar de otro modo los datos entrantes, considere la posibilidad de utilizar una ES asíncrona en su lugar. Para obtener más información, consulte E/S asíncrona en la documentación de Apache Flink.

Memoria de aplicaciones

Compruebe si su aplicación presenta fugas de recursos. Si su aplicación no elimina correctamente los subprocesos o la memoria, es posible que observe que las métricas millisbehindLatest, CheckpointSize y CheckpointDuration aumentan de golpe o gradualmente. Esta condición también puede provocar fallos en el administrador de tareas o en el administrador de funciones.