fbpx
RabbitMQ Clustering #3 | RabbitMQ consome muita memória e disco?
Publicado em: terça-feira, 31 de jan de 2023
Categorias: RabbitMQ de A a Z

Será que o RabbitMQ consome demais?


Se você pensava que ele consumia muita memória, está enganado.

Ele só deixa em memória as mensagens que ele pretende entregar mais cedo para os consumidores.

Então depende diretamente do throughput.

Ele vai tentar balancear para não consumir muito, mas se o volume trafegado é intenso (chegada de mensagens e entrega de mensagens), significa que você terá um consumo de memória maior.

O óbvio que precisa ser dito

O RabbitMQ precisa que a mensagem esteja em memória para que ele entregue para qualquer cliente. Ou seja, por mais que ela exista no disco, ele traz para a memória para poder entregar via rede para qualquer cosumidor conectado a ele.

Então naturalmente ele vai precisar de memória na proporção em que haja publicação e consumo.

Deve ser considerado que, se uma mensagem tem 2 MiB, por exemplo, ela vai consumir ao menos esses 2 MiB.

Ou seja, o consumo de memória também é influenciado pelo tamanho das mensagens.

Consumidores, consomem memória

Conexões e Canais consumirão memória também. Isso tem de ser considerado.

Quanto consome um canal ou conexão? Não dá para prever. Depende de muitas variáveis. A melhor forma de chegar a um número coerente é medindo.

Exemplo real e prático

Nessa instância, por exemplo, temos mais de 1milhão e 100 mil mensagens, e um consumo de apenas 265 MiB de RAM.

Você pode ver, na lista de filas, abaixo, que a fila com mais mensagens tem 602MiB de mensagens persistidas, e somente 6.3 MiB em memória. Cerca de 10% das mensagens apenas.

Nesse deployment, o RabbitMQ consome 3.2 GB de disco.

Então, disco também não é um problema!

Uma vantagem

Uma das vantagens do modelo de filas em relação à streams é exatamente o consumo de disco.

Pela natureza das filas, de apagar as mensagens após a confirmação de processamento, sua preocupação com disco só ocorre quando os processos param de consumir.

Esse comportamento ajuda na manutenção do consumo de disco, evitando paralisações por esse motivo. Entretanto, muitas filas, com milhões de mensagens grandes e não processadas, podem consumir todo o disco. Mas por sorte, basta processarmos para devolvermos o espaço alocado. Isso não pode ser feito, ao menos não dessa forma, com streams.

Com filas, vamos consumir mais disco somente quando os consumidores pararem, e nesse meu exemplo, os consumidores estão parados há 2 anos porque sequer foram desenvolvidos ainda.

E na medida que as mensagens forem consumidas, e processadas, o RabbitMQ vai liberando o espaço usado. Ao fim do processamento serão apenas alguns megas de disco consumidos.

Você pediu e agora virou curso. Mensageria .NET é minha formação de especialista em RabbitMQ com .NET, onde ensino RabbitMQ do básico, cada fundamento, cada detalhe, ao avançado.

Onde você vai sair do zero absoluto e vai conseguir criar, projetar e corrigir soluções .NET com RabbitMQ.

Além de contar mais 3 outros bonus incríveis para ajudar todos que precisam de um up na carreira.

RabbitMQ Newsletter

Novidades e ofertas de conteúdo exclusivo e único no Brasil.

Hoje com orgulho somos referência quando se fala em RabbitMQ com .NET.

São quase 10 anos usando RabbitMQ em projetos .NET com C#, implantando, convencendo times e mostrando o caminho para aslcançar sos 5 benefícios.

Após centenas de pedidos, criei um curso dedicado aos profissionais .NET. 

Aqui nessa newsletter eu te entrego promoções e links especiais! Cola aqui, tem muita coisa legal!

Luiz Carlos Faria

Meu primeiro contato com RabbitMQ foi em 2013.

Eu estava sozinho na definição de uma arquitetura para a reestruturação de uma integração enquanto meu time estava ocupado com o dia-a-dia.

Naquela época eu precisava de apenas 1 ou 2 recursos que o RabbitMQ entregava.

Nas primeiras semanas e meses em produção pude perceber coisas que não estavam escritas em lugar algum, benefícios e formas de uso das quais poderiam resolver anos de frustração.

Desde então RabbitMQ tem sido meu aliado na restruturação de projetos dos mais variados.

E por mais simples que seja, ainda é possível, 10 anos depois, gerar surpresas com novas abordagens que geram novos benefícios.

7 dias

É tudo que precisa para sair do zero, à produção!

Com conforto, com segurança, e com apoio.

Desde que você já seja um desenvolvedor profissional.

Se você quer entregar mais Disponibilidade, Eficiência, Resiliência, Confiabilidade e/ou Escalabilidade, em projetos .NET, aqui é o seu lugar.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.