Um consumidor inscrito em tópicos com mensagens recebidas pode apresentar lentidão na busca ou até mesmo não receber dados, mesmo sem ter alcançado o offset mais recente. Isso geralmente ocorre quando o tráfego de consumo excede a largura de banda de rede disponível, especialmente em conexões pela Internet.
Possíveis causas
Três condições relacionadas à largura de banda causam lentidão na busca de mensagens:
|
Causa |
Descrição |
|
Saturação da largura de banda |
O tráfego total de consumo da instância atingiu o limite de largura de banda da rede |
|
Mensagem individual muito grande |
Uma única mensagem possui tamanho superior à capacidade de entrega imediata da largura de banda disponível |
|
Busca em lote excede a largura de banda |
O tamanho combinado das mensagens buscadas em uma única solicitação ultrapassa a largura de banda disponível |
Parâmetros de configuração do consumidor
Os parâmetros de configuração a seguir controlam a quantidade de mensagens buscadas por solicitação:
|
Parâmetro |
O que controla |
|
max.poll.records |
Quantidade máxima de mensagens que o consumidor pode buscar simultaneamente |
|
fetch.max.bytes |
Tamanho máximo em bytes das mensagens que o consumidor pode buscar simultaneamente |
|
max.partition.fetch.bytes |
Tamanho máximo em bytes das mensagens que o consumidor pode buscar de uma única partição simultaneamente |
Diagnosticar e resolver o problema
Etapa 1: Confirme a existência de mensagens no tópico
Faça login no console do ApsaraMQ for Kafka.
Consulte as mensagens do tópico desejado.
Se nenhuma mensagem for retornada, o problema está no produtor, não no consumidor. As etapas restantes aplicam-se apenas quando existem mensagens, mas o consumidor não consegue buscá-las com rapidez suficiente.
Etapa 2: Verificar se o tráfego de consumo atingiu o limite de largura de banda
No painel de navegação à esquerda da página Instances, escolha Observability > CloudMonitor.
Clique em na aba Monitoring Chart.
Localize o gráfico instance_internet_rx.rate(bit/s) e verifique se o tráfego de consumo atingiu o teto de largura de banda.
Caso o tráfego esteja no limite, aumente a largura de banda de rede da instância.
Etapa 3: Verificar se uma única mensagem excede a largura de banda
Verifique se alguma mensagem individual no tópico é grande o suficiente para saturar sozinha a largura de banda disponível.
Nesse caso, aumente a largura de banda de rede ou reduza o tamanho da mensagem no produtor. Por exemplo, compacte payloads ou divida mensagens grandes em menores.
Etapa 4: Reduzir o tamanho da busca em lote
Se nem uma mensagem individualmente grande nem a saturação geral da largura de banda forem a causa, o tamanho combinado das mensagens em uma única solicitação de busca pode estar excedendo o limite de largura de banda. Ajuste os seguintes parâmetros:
fetch.max.bytes -- Defina este valor como inferior à largura de banda de rede.
-
max.partition.fetch.bytes -- Defina este valor como inferior ao limite por partição, calculado da seguinte forma:
limit = network bandwidth / number of partitions the consumer subscribes to
O significado de "largura de banda de rede" depende de como o consumidor se conecta ao broker:
Por meio de uma virtual private cloud (VPC): a largura de banda de rede refere-se ao tráfego máximo de escrita das elastic network interfaces (ENIs) na instância.
Pela Internet: a largura de banda de rede refere-se à largura de banda de Internet da instância.