Use as melhores práticas de desempenho - Managed Service for Apache Flink

Anteriormente, o Amazon Managed Service for Apache Flink era conhecido como Amazon Kinesis Data Analytics for Apache Flink.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use as melhores práticas de desempenho

Esta seção descreve considerações especiais para projetar um aplicativo para desempenho.

Gerenciar a escalabilidade de forma adequada

Esta seção contém informações sobre como gerenciar a escalabilidade em nível de aplicativo e de operador.

Gerenciar o escalonamento de aplicativos adequadamente

Você pode usar o ajuste de escala automático para lidar com picos inesperados na atividade do aplicativo. Suas inscrições KPUs aumentarão automaticamente se os seguintes critérios forem atendidos:

  • O ajuste de escala automático está ativado para o aplicativo.

  • CPUo uso permanece acima de 75 por cento por 15 minutos.

Se o escalonamento automático estiver ativado, mas o CPU uso não permanecer nesse limite, o aplicativo não será ampliado. KPUs Se você tiver um aumento no CPU uso que não atinge esse limite ou um aumento em uma métrica de uso diferente, como, por exemploheapMemoryUtilization, aumente a escala manualmente para permitir que seu aplicativo gerencie picos de atividade.

nota

Se o aplicativo tiver adicionado automaticamente mais recursos por meio do ajuste de escala automático, o aplicativo liberará os novos recursos após um período de inatividade. A redução de recursos afetará temporariamente o desempenho.

Para ter mais informações sobre escalonamento, consulte Implemente o escalonamento de aplicativos.

Gerencie o escalonamento do operador adequadamente

Você pode melhorar o desempenho do seu aplicativo verificando se o workload do seu aplicativo está distribuído uniformemente entre os processos de trabalho e se os operadores do seu aplicativo têm os recursos do sistema de que precisam para serem estáveis e com desempenho.

Você pode definir o paralelismo para cada operador no código do seu aplicativo usando a configuração parallelism. Se você não definir o paralelismo para um operador, ele usará a configuração de paralelismo no nível do aplicativo. Os operadores que usam a configuração de paralelismo no nível do aplicativo podem potencialmente usar todos os recursos do sistema disponíveis para o aplicativo, tornando-o instável.

Para determinar melhor o paralelismo de cada operador, considere os requisitos relativos de recursos do operador em comparação com os outros operadores no aplicativo. Defina operadores que consomem mais recursos para uma configuração de paralelismo de operadores mais alta do que operadores que consomem menos recursos.

O paralelismo total do operador para o aplicativo é a soma do paralelismo para todos os operadores no aplicativo. Você ajusta o paralelismo total do operador para seu aplicativo determinando a melhor proporção entre ele e o total de slots de tarefas disponíveis para seu aplicativo. Uma proporção estável típica do paralelismo total do operador em relação aos slots de tarefas é de 4:1, ou seja, o aplicativo tem um slot de tarefa disponível para cada quatro subtarefas do operador disponíveis. Um aplicativo com operadores que consomem mais recursos pode precisar de uma proporção de 3:1 ou 2:1, enquanto um aplicativo com operadores que consomem menos recursos pode ser estável com uma proporção de 10:1.

Você pode definir a proporção para o operador usando Use propriedades de tempo de execução, para poder ajustar o paralelismo do operador sem compilar e carregar o código do aplicativo.

O exemplo de código a seguir demonstra como definir o paralelismo do operador como uma proporção ajustável do paralelismo atual do aplicativo:

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

Para obter informações sobre subtarefas, slots de tarefas e outros recursos do aplicativo, consulteAnalise os recursos do aplicativo Managed Service for Apache Flink.

Para controlar a distribuição do workload nos processos de trabalho do seu aplicativo, use a configuração Parallelism e o método de partição KeyBy . Para obter mais informações, consulte os seguintes tópicos na documentação do Apache Flink:

Monitore o uso de recursos de dependência externa

Se houver um gargalo de desempenho em um destino (como Kinesis Streams, Firehose, DynamoDB ou Service), seu aplicativo sofrerá contrapressão. OpenSearch Verifique se suas dependências externas estão adequadamente provisionadas para o throughput do seu aplicativo.

nota

Falhas em outros serviços podem causar falhas em seu aplicativo. Se você estiver vendo falhas em seu aplicativo, verifique se há falhas CloudWatch nos registros dos serviços de destino.

Execute seu aplicativo Apache Flink localmente

Para solucionar problemas de memória, você pode executar seu aplicativo em uma instalação local do Flink. Isso lhe dará acesso a ferramentas de depuração, como rastreamento de pilha e despejos de heap, que não estão disponíveis ao executar seu aplicativo no Managed Service for Apache Flink.

Para obter informações sobre como criar uma instalação local do Flink, consulte Standalone na documentação do Apache Flink.