Ajuste de desempenho do Openflow Connector para Kafka

Nota

O conector está sujeito aos termos do conector.

Este tópico fornece orientação para otimizar o desempenho de Openflow Connector para Kafka a fim de obter a melhor taxa de transferência e minimizar a latência ao ingerir dados no Snowflake.

Considerações de desempenho

Ao configurar o Openflow Connector para Kafka para obter o desempenho ideal, considere os seguintes fatores principais que afetam a taxa de transferência e a latência da ingestão:

Características da mensagem

Tamanho da mensagem

Mensagens maiores podem proporcionar melhor taxa de transferência, mas podem exigir mais memória e tempo de processamento por mensagem.

Formato de mensagem

Normalmente mensagens JSON exigem mais sobrecarga de processamento em comparação com mensagens AVRO devido à inferência de esquema e à serialização/desserialização diferente.

Volume da mensagem

Volumes maiores de mensagens se beneficiam do processamento paralelo e de lotes maiores.

Configuração do Kafka

Contagem de partições

Mais partições permitem maior paralelismo, mas exigem uma coordenação cuidadosa com a configuração do consumidor.

Compressão

A compressão de mensagens pode reduzir a largura de banda da rede, mas aumenta a sobrecarga da CPU.

Otimização do FlowFile

Tamanho do FlowFile

Para otimizar o desempenho, os FlowFiles devem estar no intervalo de 1 a 10 MB em vez de conter mensagens pequenas individuais. Os FlowFiles maiores reduzem a sobrecarga de processamento e melhoram o rendimento, minimizando o número de operações de arquivos individuais. As configurações padrão devem produzir FlowFiles em uma faixa de tamanho aceitável. Espera-se que os FlowFiles sejam pequenos quando a taxa de transferência for baixa.

Se você observar pequenos FlowFiles com taxa de transferência elevada, entre em contato com o suporte Snowflake para obter assistência.

Rede e infraestrutura

Latência da rede

A menor latência entre os corretores Kafka e Openflow melhora o desempenho geral.

Largura de banda

Uma largura de banda de rede suficiente é essencial para cenários de alta produtividade.

Recomendações do tamanho de nó

A tabela a seguir fornece recomendações de configuração com base nas características esperadas da carga de trabalho.

Tamanho do nó

Recomendado para

Capacidade da taxa de mensagens

Small (S)

Cenários de taxa de transferência baixa a moderada

Até 10 MB/s por nó

Medium (M)

Cenários de taxa de transferência moderada a alta

Até 40 MB/s por nó

Large (L)

Cenários de alto rendimento

Excedendo 40 MB/s por nó

Práticas recomendadas de otimização de desempenho

Ajuste das tarefas simultâneas do processador

Para otimizar o desempenho do processador, você pode ajustar o número de tarefas simultâneas para os processadores ConsumeKafka e PutSnowpipeStreaming. As tarefas simultâneas permitem que os processadores executem vários threads simultaneamente, melhorando o rendimento em cenários de alto volume.

Para ajustar as tarefas simultâneas de um processador, execute as seguintes tarefas:

  1. Clique com o botão direito do mouse no processador na tela do Openflow.

  2. Selecione Configure no menu de contexto.

  3. Navegue até a guia Scheduling.

  4. No campo Concurrent tasks, digite o número preferencial de tarefas simultâneas.

  5. Selecione Apply para salvar a configuração.

Considerações importantes

Uso da memória

Cada tarefa simultânea consome memória adicional. Monitore o uso do heap de JVM ao aumentar as tarefas simultâneas.

Partições do Kafka

Para ConsumeKafka, o número de tarefas simultâneas multiplicado pelo número de nós não deve exceder o número total de partições do Kafka de todos os tópicos.

Comece de forma conservadora

Comece com valores mais baixos e aumente gradualmente enquanto monitora as métricas de desempenho.

Ajuste do tamanho máximo do lote no processador PutSnowpipeStreaming

O parâmetro Tamanho máximo do lote (Max Batch Size) no processador PutSnowpipeStreaming controla quantos registros são processados em um único lote. O ajuste desse parâmetro ajuda a otimizar o uso da memória e a taxa de transferência.

O Tamanho máximo do lote deve ser ajustado com base no tamanho médio do registro para manter o tamanho total do lote (Tamanho máximo do lote × tamanho médio do registro) em torno de 4 MB, não excedendo 16 MB para obter um desempenho ideal.

Por exemplo: se o tamanho médio do registro for 1KB, o Tamanho máximo do lote deverá ser definido como 4.000.

Para ajustar o Tamanho máximo do lote, faça o seguinte

  1. Clique com o botão direito do mouse no processador PutSnowpipeStreaming.

  2. Selecione Configure no menu de contexto.

  3. Navegue até a guia Properties.

  4. Localize a propriedade Max Batch Size.

  5. Digite o valor calculado com base no tamanho médio do registro.

  6. Selecione Apply para salvar as alterações.

Considerações importantes

  • Monitore o uso da memória e o rendimento ao ajustar o tamanho do lote.

  • Comece com esses valores recomendados e ajuste apenas se necessário enquanto monitora o desempenho.

Considerações de escala

A plataforma Openflow usa um Horizontal Pod Autoscaler (HPA) com base na utilização da CPU e não oferece suporte ao dimensionamento automático baseado em métricas personalizadas.

A configuração adequada de tarefas simultâneas é essencial para o dimensionamento automático eficaz. Se as tarefas simultâneas forem definidas como muito baixas, o sistema poderá não ser escalonado mesmo quando o atraso do Kafka estiver aumentando, porque o limite de uso da CPU necessário para acionar o escalonamento poderá não ser atingido. Isso pode resultar em atrasos no processamento e acúmulo de pendências, apesar da disponibilidade de recursos adicionais.

Para garantir o comportamento ideal de dimensionamento, configure as tarefas simultâneas de acordo com as recomendações em Ajuste das tarefas simultâneas do processador e monitore a utilização da CPU e as métricas de atraso do Kafka.

Solução de problemas de desempenho

Gargalos de desempenho comuns

Alto atraso do consumidor ou gargalos de ingestão do Snowflake

Se o atraso do consumidor Kafka estiver aumentando ou a ingestão do Snowflake estiver lenta, execute as seguintes tarefas:

  1. Verifique a conectividade da rede e a largura de banda entre os corretores Openflow e Kafka.

  2. Observe se a fila na frente do processador PutSnowpipeStreaming aumenta.

    1. Em caso afirmativo, considere a possibilidade de adicionar mais tarefas simultâneas ao processador PutSnowpipeStreaming nas limitações de intervalo fornecidas em Ajuste das tarefas simultâneas do processador.

    2. Caso contrário, considere a possibilidade de adicionar mais tarefas simultâneas para o processador ConsumeKafka nas limitações de intervalo fornecidas em Ajuste das tarefas simultâneas do processador.

  3. Considere usar um tipo de nó maior.

  4. Considere aumentar o número máximo de nós para o tempo de execução.

Pressão da memória

Se você estiver enfrentando problemas relacionados à memória:

  1. Reduza o tamanho dos lotes para diminuir o consumo de memória.

  2. Reduza o número de tarefas simultâneas para o processador ConsumeKafka.

  3. Considere a possibilidade de atualizar para um tipo de nó maior.

Problemas de latência da rede

Se você estiver enfrentando alta latência:

  1. Verifique a configuração da rede entre o Openflow e os sistemas externos.

  2. Considere a possibilidade de implementar o Openflow mais próximo do cluster do Kafka.

  3. Se estiver trabalhando com baixa taxa de transferência, considere reduzir as configurações Atraso do cliente no processador PutSnowpipeStreaming e Tempo máximo não comprometido no processador ConsumeKafka.

Próximos passos

  • Comece com a configuração recomendada para o tamanho de seu nó.

  • Monitore as métricas de desempenho e ajuste as configurações com base no comportamento observado.

  • Considere a possibilidade de fazer testes de carga em um ambiente que não seja de produção antes de implementar na produção.