Amazon MQ for RabbitMQ: Alarme de alta memória - Amazon MQ

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á.

Amazon MQ for RabbitMQ: Alarme de alta memória

O RabbitMQ emitirá um alarme de alta memória quando o uso de memória do corretor, identificado pela CloudWatch métricaRabbitMQMemUsed, exceder o limite de memória identificado por. RabbitMQMemLimit RabbitMQMemLimité definido pelo Amazon MQ e foi ajustado especificamente considerando a memória disponível para cada tipo de instância de host.

Um agente do Amazon MQ for RabbitMQ que tiver gerado um alarme de alta memória bloqueará todos os clientes que estiverem publicando mensagens. Devido ao alto uso de memória, seu agente pode ter também outros problemas que complicam o diagnóstico e a resolução do alarme.

Agentes de instância única incapazes de concluir a inicialização devido ao alto uso de memória podem entrar em um loop de reinicialização, durante o qual as interações com o agente são limitadas. Em implantações de cluster, filas podem apresentar sincronização pausada de mensagens entre réplicas em diferentes nós. Sincronizações de filas pausadas impedem o consumo de mensagens dessas filas e devem ser abordadas separadamente ao resolver o alarme de alta memória.

O Amazon MQ não reiniciará um agente com um alarme de memória alta e retornará uma exceção para RebootBrokerAPIas operações, desde que o agente continue disparando o alarme.

Use as informações nesta seção para ajudar a diagnosticar e resolver alarmes de alta memória do RabbitMQ gerados pelo seu agente.

nota

Pode levar várias horas para que o ALARM status RABBITMQ _ MEMORY _ desapareça após você realizar as ações necessárias.

nota

Não é possível fazer downgrade de um agente de um tipo de instância mq.m5. para um tipo de instância mq.t3.micro. Se quiser fazer downgrade, você deverá excluir o agente e criar outro.

Diagnosticar alarme de alta memória com o console da Web do RabbitMQ

O console da Web do RabbitMQ pode gerar e exibir informações detalhadas de uso de memória para cada nó. Para encontrar essas informações, faça o seguinte:

  1. Faça login AWS Management Console e abra o console web RabbitMQ do seu corretor.

  2. No console do RabbitMQ, na página Overview (Visão geral), escolha o nome de um nó na lista Nodes (Nós).

  3. Na página de detalhes do nó, escolha Memory details (Detalhes da memória) para expandir a seção e visualizar as informações de uso de memória do nó.

As informações de uso de memória fornecidas pelo RabbitMQ no console da Web podem ajudar você a determinar quais recursos podem estar consumindo muita memória e contribuindo para o alarme de alta memória. Para obter mais informações sobre os detalhes de uso da memória disponíveis no console da Web do RabbitMQ, consulte o tópico de Considerações sobre o uso da memória no site de documentação do RabbitMQ Server.

Diagnosticar o alarme de alta memória usando métricas do Amazon MQ

O Amazon MQ habilita métricas para o seu agente por padrão. Você pode visualizar as métricas do seu corretor acessando o CloudWatch console ou usando CloudWatch API o. As seguintes métricas são úteis ao diagnosticar o alarme de alta memória do RabbitMQ.

Métrica do Amazon MQ CloudWatch Motivo do alto uso de memória
MessageCount Mensagens são armazenadas na memória até que sejam consumidas ou descartadas. Uma alta contagem de mensagens pode indicar o excesso de uso de recursos e pode resultar em um alarme de alta memória.
QueueCount Filas são armazenadas na memória, e um grande número de filas pode resultar em um alarme de alta memória.
ConnectionCount Conexões de clientes usam memória, e muitas conexões simultâneas podem resultar em um alarme de alta memória.
ChannelCount De maneira semelhante a conexões, canais estabelecidos usando cada conexão também são armazenados na memória do nó, e um alto número de canais pode resultar em um alarme de alta memória.
ConsumerCount Para cada consumidor conectado ao agente, um número definido de mensagens é carregado do armazenamento na memória antes de ser entregue ao consumidor. Um alto número de conexões de consumidor pode causar alto uso de memória e resultar em um alarme de alta memória.
PublishRate A publicação de mensagens utiliza a memória do agente. Se a taxa na qual as mensagens são publicadas no agente for muito alta e ultrapassar significativamente a taxa na qual o agente entrega mensagens aos consumidores, o agente poderá gerar um alarme de alta memória.

Solucionar o alarme de alta memória

Para cada colaborador identificado, convém seguir este conjunto de ações para atenuar e resolver o alarme de alta memória do agente.

Motivo do alto uso de memória Recomendação do Amazon MQ
O número de mensagens nas filas é alto demais. Faça o seguinte:
  • Consuma as mensagens publicadas nas filas.

  • Limpe mensagens das filas.

  • Exclua as filas do seu agente.

O número de filas configuradas no agente é alto demais. Reduza o número dessas filas.
O número de conexões estabelecidas no agente é alto demais. Reduza o número dessas conexões. Para obter mais informações, consulte Reduzir o número de conexões e canais.
O número de canais estabelecidos no agente é alto demais. Reduza o número desses canais. Para obter mais informações, consulte Reduzir o número de conexões e canais.
O número de consumidores conectados ao agente é alto demais. Reduza o número de consumidores conectados ao agente.
A taxa de publicação de mensagens é alta demais. Reduza a taxa na qual os publicadores enviam mensagens ao agente.
A taxa de tentativa de conexão dos clientes é alta demais. Reduza a frequência na qual os clientes tentam se conectar ao agente para publicar ou consumir mensagens ou configure o agente.

Reduzir o número de conexões e canais

As conexões com o seu agente do Amazon MQ for RabbitMQ podem ser encerradas por suas aplicações cliente ou manualmente com o uso do console da Web do RabbitMQ. Para encerrar uma conexão usando o console da Web do RabbitMQ, faça o seguinte.

  1. Faça login AWS Management Console e abra o console web RabbitMQ do seu corretor.

  2. No console do RabbitMQ, escolha a guia Connections (Conexões).

  3. Na página Connections (Conexões), em All connections (Todas as conexões), escolha na lista o nome da conexão que você deseja encerrar.

  4. Na página de detalhes da conexão, escolha Close this connection (Encerrar esta conexão) para expandir a seção e depois escolha Force Close (Forçar encerramento). Como opção, você pode substituir o texto padrão do campo Reason (Motivo) pela sua própria descrição. O Amazon MQ for RabbitMQ retornará o motivo especificado ao cliente quando você encerrar a conexão.

  5. Escolha OK na caixa de diálogo para confirmar e encerrar a conexão.

Quando você encerrar uma conexão, todos os canais associados à conexão encerrada também serão encerrados.

nota

Suas aplicações cliente podem ser configuradas para restabelecer automaticamente as conexões com o agentes depois que estas são encerradas. Nesse caso, encerrar conexões pelo console da Web do agente não será suficiente para reduzir a contagem de conexões ou canais.

Para corretores sem acesso público, você pode bloquear temporariamente as conexões negando o tráfego de entrada na porta de protocolo de mensagem apropriada, por exemplo, porta 5671 para conexões. AMQP É possível bloquear a porta no grupo de segurança que você forneceu ao Amazon MQ ao criar o agente. Para obter mais informações sobre como modificar seu grupo de segurança, consulte Adicionar regras a um grupo de segurança no Guia do VPC usuário da Amazon.

Solucionar sincronizações de filas pausadas em implantações de cluster

Ao solucionar alarmes de alta memória do RabbitMQ, você pode constatar que as mensagens em uma ou várias filas não podem ser consumidas. Essas filas podem estar no processo de sincronização de mensagens entre nós, durante o qual as respectivas filas ficam indisponíveis para publicação e consumo. As sincronizações de filas podem ficar pausadas devido ao alarme de alta memória e até mesmo contribuir para o alarme de memória.

Para saber mais sobre como interromper e repetir sincronizações de filas pausadas, consulte Resolvendo a sincronização de fila pausada do RabbitMQ.

Solucionar loops de reinicialização em agentes de instância única

Um agente de instância única do Amazon MQ for RabbitMQ que gera um alarme de alta memória corre o risco de se tornar indisponível se for reiniciado e não tiver memória suficiente para a inicialização. Isso pode fazer com que o RabbitMQ entre em um loop de reinicialização e evite interações adicionais com o agente até que o problema seja resolvido. Se o seu agente estiver em um loop de reinicialização, não será possível aplicar as ações recomendadas do Amazon MQ descritas anteriormente nesta seção para resolver o alarme de alta memória.

Para recuperar o agente, recomendamos fazer upgrade para um tipo de instância maior com mais memória. Ao contrário de implantações de cluster, você pode fazer upgrade de um agente de instância única enquanto ele está enfrentando um alarme de alta memória, pois não há sincronizações de filas a serem executadas entre nós durante uma reinicialização.

Evitar alarmes de alta memória

Para cada fator contribuinte identificado, recomendamos o seguinte conjunto de ações para evitar e reduzir a ocorrência de alarmes de alta memória do RabbitMQ.

Motivo do alto uso de memória Recomendação do Amazon MQ
O número de mensagens nas filas é alto demais. Faça o seguinte:
O número de filas configuradas no agente é alto demais. Defina ou reduza o limite de contagem de filas.
O número de conexões estabelecidas no agente é alto demais. Defina ou reduza o limite de contagem de conexões.
O número de canais estabelecidos no agente é alto demais. Defina um número máximo de canais por conexão em aplicações cliente.
O número de consumidores conectados ao agente é alto demais. Defina um pequeno limite de pré-busca de consumidores.
A taxa de tentativa de conexão dos clientes é alta demais. Use conexões de maior duração para reduzir o número e a frequência de tentativas de conexão.

Depois que o alarme de alta memória do agente for resolvido, você poderá fazer upgrade do tipo de instância do host para uma instância com recursos adicionais. Para obter informações sobre como atualizar o tipo de instância do seu corretor, consulte UpdateBrokerInputa Referência do Amazon MQ REST API.

Para obter uma listagem completa dos tipos de instância de agentes, consulte Amazon MQ para tipos de instância RabbitMQ.