Utiliser les meilleures pratiques en matière de performances - Service géré pour Apache Flink

Le service géré Amazon pour Apache Flink était auparavant connu sous le nom d’Amazon Kinesis Data Analytics pour Apache Flink.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser les meilleures pratiques en matière de performances

Cette section décrit les considérations spéciales relatives à la conception d’une application axée sur les performances.

Gérer correctement la mise à l’échelle

Cette section contient des informations sur la gestion de la mise à l’échelle au niveau de l’application et au niveau de l’opérateur.

Gérer correctement la mise à l’échelle des applications

Vous pouvez utiliser la mise à l’autoscaling pour gérer les pics inattendus d’activité des applications. Le nombre de vos candidatures KPUs augmentera automatiquement si les critères suivants sont remplis :

  • L’autoscaling est activé pour l’application.

  • CPUl'utilisation reste supérieure à 75 % pendant 15 minutes.

Si le dimensionnement automatique est activé, mais que CPU l'utilisation ne reste pas à ce seuil, l'application n'augmentera pas. KPUs Si vous constatez un pic CPU d'utilisation qui n'atteint pas ce seuil, ou un pic lié à un indicateur d'utilisation différent, par exempleheapMemoryUtilization, augmentez le dimensionnement manuellement pour permettre à votre application de gérer les pics d'activité.

Note

Si l’application a automatiquement ajouté des ressources supplémentaires par le biais de l’autoscaling, l’application libérera les nouvelles ressources après une période d’inactivité. La réduction des ressources affectera temporairement les performances.

Pour plus d’informations sur la mise à l’échelle, consultez Implémenter le dimensionnement des applications dans le service géré pour Apache Flink.

Gérez correctement la mise à l’échelle des opérateurs

Vous pouvez améliorer les performances de votre application en vérifiant que la charge de travail de votre application est répartie uniformément entre les processus de travail et que les opérateurs de votre application disposent des ressources système dont ils ont besoin pour être stables et performants.

Vous pouvez définir le parallélisme pour chaque opérateur du code de votre application à l’aide du paramètre parallelism. Si vous ne définissez pas le parallélisme pour un opérateur, celui-ci utilisera le paramètre de parallélisme au niveau de l’application. Les opérateurs qui utilisent le paramètre de parallélisme au niveau de l’application peuvent potentiellement utiliser toutes les ressources système disponibles pour l’application, ce qui la rend instable.

Pour déterminer au mieux le parallélisme de chaque opérateur, considérez les besoins relatifs en ressources de l’opérateur par rapport aux autres opérateurs de l’application. Définissez un paramètre de parallélisme des opérateurs plus gourmands en ressources pour les opérateurs plus gourmands que pour les opérateurs moins gourmands.

Le parallélisme total des opérateurs de l’application est la somme du parallélisme de tous les opérateurs de l’application. Vous ajustez le parallélisme total des opérateurs pour votre application en déterminant le meilleur rapport entre celui-ci et le nombre total d’emplacements de tâches disponibles pour votre application. Un rapport stable typique entre le parallélisme total des opérateurs et les emplacements de tâches est de 4:1, c’est-à-dire que l’application dispose d’un emplacement de tâches disponible pour quatre sous-tâches d’opérateur disponibles. Une application avec des opérateurs plus gourmands en ressources peut avoir besoin d’un ratio de 3:1 ou 2:1, tandis qu’une application avec des opérateurs moins gourmands en ressources peut être stable avec un ratio de 10:1.

Vous pouvez définir le ratio pour l’opérateur à l’aide de Utiliser les propriétés d'exécution dans Managed Service pour Apache Flink, afin de pouvoir ajuster le parallélisme de l’opérateur sans compiler ni télécharger le code de votre application.

L’exemple de code suivant montre comment définir le parallélisme des opérateurs en tant que ratio réglable du parallélisme de l’application actuelle :

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

Pour obtenir des informations sur les sous-tâches, les emplacements de tâches et les autres ressources de l’application, consultez Passez en revue les ressources de l'application Managed Service pour Apache Flink.

Pour contrôler la répartition de la charge de travail entre les processus de travail de votre application, utilisez le paramètre Parallelism et la méthode de partition KeyBy. Pour plus d’informations, consultez les rubriques suivantes dans la documentation Apache Flink :

Surveiller l’utilisation des ressources de dépendance externe

En cas de problème de performances dans une destination (telle que Kinesis Streams, Firehose, DynamoDB ou Service), votre application subira une contre-pression OpenSearch . Vérifiez que vos dépendances externes sont correctement configurées pour le débit de votre application.

Note

Les échecs d’autres services peuvent entraîner des défaillances dans votre application. Si vous constatez des défaillances dans votre application, consultez les CloudWatch journaux de vos services de destination pour détecter les défaillances.

Exécuter votre application Apache Flink localement

Pour résoudre les problèmes de mémoire, vous pouvez exécuter votre application dans une installation locale de Flink. Cela vous donnera accès à des outils de débogage tels que la trace de pile et le vidage de tas, qui ne sont pas disponibles lors de l’exécution de votre application dans le service géré pour Apache Flink.

Pour plus d'informations sur la création d'une installation Flink locale, voir Standalone dans la documentation d'Apache Flink.