Prácticas recomendadas 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.

Prácticas recomendadas de rendimiento

En esta sección se describen las consideraciones especiales a la hora de diseñar una aplicación orientada al desempeño.

Administración correcta del escalado

Esta sección contiene información sobre la administración del escalado a nivel de aplicación y a nivel de operador.

Gestión correcta del escalado de las aplicaciones

Puede utilizar el escalado automático para gestionar los picos inesperados en la actividad de las aplicaciones. Las KPU de su aplicación se incrementarán automáticamente si se cumplen los siguientes requisitos:

  • El ajuste de escala automático está activado para la aplicación.

  • El uso de la CPU permanece por encima del 75 por ciento durante 15 minutos.

Si el escalado automático está activado, pero el uso de la CPU no se mantiene en este umbral, la aplicación no escalará verticalmente las KPU. Si experimenta un aumento en el uso de la CPU que no alcanza este umbral o un aumento en una métrica de uso diferente como, por ejemplo, heapMemoryUtilization, aumente el escalado manualmente para que su aplicación pueda gestionar los picos de actividad.

nota

Si la aplicación ha agregado automáticamente más recursos mediante el escalado automático, la aplicación liberará los nuevos recursos tras un período de inactividad. La reducción de los recursos afectará temporalmente al desempeño.

Para obtener más información acerca del escalado, consulte Escalado.

Gestión correcta del escalado del operador

Puede mejorar el desempeño de su aplicación verificando que la carga de trabajo de la aplicación se distribuya de manera uniforme entre los procesos de trabajo y que los operadores de la aplicación dispongan de los recursos del sistema que necesitan para mantener la estabilidad y el desempeño.

Puede establecer el paralelismo para cada operador en el código de su aplicación mediante el parámetro parallelism. Si no establece el paralelismo para un operador, éste utilizará el ajuste de paralelismo a nivel de aplicación. Los operadores que utilizan la configuración de paralelismo a nivel de aplicación pueden utilizar todos los recursos del sistema disponibles para la aplicación, lo que hace que la aplicación se vuelva inestable.

Para determinar mejor el paralelismo de cada operador, tenga en cuenta los requisitos de recursos relativos del operador en comparación con los demás operadores de la aplicación. Defina los operadores que consumen más recursos con una configuración de paralelismo de operadores más alta que los operadores que consumen menos recursos.

El paralelismo total de los operadores de la aplicación es la suma del paralelismo de todos los operadores de la aplicación. Para ajustar el paralelismo total de los operadores de la aplicación, debe determinar la mejor relación entre este y el total de tareas disponibles para la aplicación. Una relación estable típica entre el paralelismo total del operador y los intervalos de tareas es de 4:1, es decir, la aplicación tiene un intervalo de tareas disponible por cada cuatro subtareas del operador disponibles. Una aplicación con operadores que consumen más recursos puede necesitar una relación de 3:1 o 2:1, mientras que una aplicación con operadores que consumen menos recursos puede ser estable con una relación de 10:1.

Puede establecer la relación que utilizará el operador usando Propiedades del tiempo de ejecución, para ajustar el paralelismo del operador sin necesidad de compilar ni cargar el código de la aplicación.

El siguiente ejemplo de código muestra cómo establecer el paralelismo de los operadores como una relación ajustable del paralelismo de la aplicación actual:

Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties(); operatorParallelism = StreamExecutionEnvironment.getParallelism() / Integer.getInteger( applicationProperties.get("OperatorProperties").getProperty("MyOperatorParallelismRatio") );

Para obtener información sobre las subtareas, las tareas disponibles y otros recursos de la aplicación, consulte Recursos de aplicaciones.

Para controlar la distribución de la carga de trabajo entre los procesos de trabajo de la aplicación, utilice la configuración Parallelism y el método de partición KeyBy. Para obtener más información, consulte los siguientes temas en la documentación de Apache Flink:

Supervisión del uso de los recursos de dependencia externa

Si hay un cuello de botella en el rendimiento en un destino (como Kinesis Streams, Firehose, DynamoDB o Service), la aplicación experimentará una OpenSearch contrapresión. Compruebe que las dependencias externas se hayan obtenido correctaente para el rendimiento de su aplicación.

nota

Los errores en otros servicios pueden provocar errores en la aplicación. Si observa errores en su aplicación, compruebe si hay errores en los CloudWatch registros de los servicios de destino.

Ejecución local de la aplicación Apache Flink

Para solucionar problemas de memoria, puede ejecutar la aplicación en una instalación local de Flink. Esto le permitirá acceder a herramientas de depuración, como el rastreo de pilas y los volcados de pilas, que no están disponibles al ejecutar la aplicación en Managed Service for Apache Flink.

Para obtener información sobre cómo crear una instalación local de Flink, consulte Standalone en la documentación de Apache Flink.