Ir para o conteúdo

Como posso solucionar problemas de alto uso da CPU em um ou mais agentes em um cluster do Amazon MSK?

6 minuto de leitura
0

Quero solucionar problemas de alto uso da CPU em um ou mais agentes no meu cluster do Amazon Managed Streaming for Apache Kafka (Amazon MSK).

Resolução

A utilização total da CPU para um cluster do Amazon MSK é a soma dos seguintes valores:

  • Porcentagem de CPU no espaço do usuário definida pela métrica CpuUser
  • Porcentagem de CPU no espaço do kernel que é definida por CpuSystem

É uma prática recomendada manter a utilização total da CPU em menos de 60% para que 40% da CPU do seu cluster esteja disponível. O Apache Kafka pode redistribuir a carga da CPU entre os agentes no cluster, conforme necessário. Por exemplo, quando ocorre uma falha do agente, o Amazon MSK pode usar a CPU disponível para realizar manutenções automáticas, como patches.

Seu cluster do Amazon MSK pode ter alta utilização da CPU por um dos seguintes motivos:

  • O tráfego de entrada ou saída é alto.
  • Você excedeu o número de partições por agente e sobrecarregou o cluster.
  • Você usa um tipo de instância T.

O tráfego de entrada ou saída é alto

É possível monitorar o tráfego de entrada e saída para o cluster usando as Amazon CloudWatch Metrics BytesInPerSec e BytesOutPerSec. Se essas métricas de um agente tiverem valores altos ou estiverem distorcidas, o agente pode estar tendo um alto uso da CPU.

Os agentes podem ter alto tráfego quando tópicos de grande volume têm distribuição desigual de partições. Ou o produtor não distribui os dados uniformemente para todas as partições. Para resolver esse problema, verifique sua chave de particionamento de produtor e atualize a configuração do cluster. Em seguida, configure a chave de partição para que uma partição não receba mais dados do que as demais.

Também é possível ter um tráfego intenso quando o grupo de consumidores realiza compensações com muita frequência. O tráfego das confirmações de compensações afeta o agente. Para resolver esse problema, reduza o número de grupos de consumidores ou faça upgrade do tamanho da sua instância.

O número de partições por agente excedeu o valor recomendado

Se o número de partições por agente exceder o valor recomendado, seu cluster ficará sobrecarregado. Quando seu cluster está sobrecarregado, não é possível realizar as seguintes ações:

  • Atualizar a configuração do cluster.
  • Atualizar a versão do Apache Kafka para o cluster.
  • Atualizar o cluster para um tipo de agente menor.
  • Associar um segredo do AWS Secrets Manager a um cluster que tenha autenticação SASL/SCRAM.

Quando você tem muitas partições, pode ter uma alta utilização da CPU e sofrer uma degradação no desempenho.

Para resolver esse problema, realize as seguintes ações:

  • Exclua tópicos obsoletos ou não utilizados para colocar a contagem de partições dentro do limite recomendado. Para identificar o tópico não utilizado, ative o monitoramento no nível do tópico e verifique as métricas BytesInPerSec e BytesOutPerSec no nível do tópico para ver se há algum tráfego fluindo pelo tópico. Se não houver tráfego fluindo, será possível excluir os tópicos não utilizados.
  • Aumente a escala verticalmente do tipo de instância do agente para um tipo que possa acomodar o número de partições de que você precisa. Além disso, adicione mais agentes e reatribua partições.

Observação: você deve executar o comando kafka-reassign-partitions para reatribuir partições. O Amazon MSK não reatribui partições automaticamente quando você adiciona agentes.

Você usa um tipo de instância T

Os tipos de instância T têm um desempenho básico com alguns atributos intermitentes. Essas instâncias permitem um desempenho básico de 20% de utilização da CPU. Se você exceder esse valor, o tipo de instância começará a usar os créditos de CPU. Quando a utilização é inferior a 20%, os créditos de CPU são acumulados.

Certifique-se de monitorar a métrica de saldo de crédito da CPU para instâncias intermitentes no Amazon CloudWatch.

Monitore o uso básico da CPU e o saldo de créditos de qualquer cluster executado em tipos de instância T. Se o uso da CPU for maior do que a linha de base e não houver mais créditos para gastar, o cluster terá problemas de desempenho.

Outras causas possíveis

O número de conexões para o cliente é alto

Um pico em qualquer uma das seguintes Amazon CloudWatch Metrics pode fazer com que o uso da CPU do agente aumente:

  • ConnectionCount
  • ConnectionCreationRate
  • ConnectionCloseRate

Para solucionar esse problema, monitore essas métricas no Amazon CloudWatch. Em seguida, reduza a contagem de conexões conforme necessário ou aumente a escala do tipo de agente verticalmente.

O Amazon MSK detecta e se recupera de uma falha do agente

Quando o Amazon MSK detecta uma falha do agente e executa uma operação de manutenção automática, como um patch, há um aumento no uso da CPU. Assim que o Amazon MSK conclui a operação do cluster, o uso da CPU cai para os níveis normais de uso.

Um usuário solicita uma alteração de tipo de agente ou upgrade de versão

Quando um usuário solicita uma alteração do tipo de agente ou um upgrade de versão, o Amazon MSK implanta fluxos de trabalho contínuos que colocam um agente off-line por vez. Quando agentes com partições líderes ficam off-line, o Apache Kafka reatribui a liderança da partição para redistribuir o trabalho a outros agentes no cluster. Monitore o uso da CPU para esses agentes e certifique-se de que você tenha espaço livre de CPU suficiente em seu cluster para tolerar eventos operacionais.

O uso da CPU para um ou mais agentes é alto devido à distribuição distorcida de dados

O uso da CPU para um ou mais agentes pode ficar alto devido à distribuição distorcida de dados. Por exemplo, se você gravar para dois entre seis agentes e eles forem os mais consumidos, eles apresentarão um maior uso da CPU. Para resolver esse problema, certifique-se de usar a técnica de revezamento para que as partições no cluster sejam bem distribuídas.

Para ver como o controlador de cluster do Apache Kafka distribui as partições pelo cluster, execute o seguinte comando:

bin/kafka-topics.sh -bootstrap-server $MYBROKERS --describe --topic my-topic

Exemplo de saída:

Topic:my-topic    PartitionCount:7 ReplicationFactor:3 Configs:
    Topic: my-topic    Partition: 0 Leader: 1 Replicas: 1,3,2 Isr: 1,3,2
    Topic: my-topic    Partition: 1 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3
    Topic: my-topic    Partition: 2 Leader: 3 Replicas: 3,2,1 Isr: 3,2,1
    Topic: my-topic    Partition: 3 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3
    Topic: my-topic    Partition: 4 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1
    Topic: my-topic    Partition: 5 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2

Você ativou o monitoramento aberto

Se você ativar o monitoramento aberto com o Prometheus e o intervalo de coleta for baixo, isso poderá levar a um grande número de métricas emitidas e, em seguida, a um aumento no uso da CPU. Para resolver esse problema, aumente o intervalo de coleta. É uma prática recomendada não exceder 1 coleta por minuto por agente para preservar o desempenho do seu cluster do Amazon MSK. Por padrão, o intervalo de coleta ocorre a cada 10 a 15 segundos.

AWS OFICIALAtualizada há 4 meses