Rabbitmq - Expectativas razoáveis ​​de desempenho / escala

13

Ficaria grato se alguém pudesse me apontar na direção de alguns valores / limitações razoáveis ​​de escala no rabbitmq (em hardware "médio", fwiw) ou postar sua experiência com seu desempenho. Estou tentando ter uma noção da capacidade de número de filas, número de assinantes em filas, implicações no desempenho de ter centenas ou milhares de ouvintes nas filas de fanout, qualquer número difícil que alguém possa ter executando em um ambiente de alta capacidade.

user21640
fonte
Isso é extremamente simples de testar, especialmente considerando que, com os números esperados, você tem um orçamento para preparar algumas VMs. Eu sugiro que você o teste com base no seu caso de uso exato, no hardware que você esperaria usar.
Andrew M.
Veja os planos do CloudAMQP - esses são números de desempenho testados para determinadas configurações de hardware.
Restabeleça Monica - M. Schröder

Respostas:

11

Primeiro de tudo, você precisa entender quais itens da sua lista têm limites de escala que você pode atingir e quais não. Parte disso depende da implementação, portanto, ajuda a ler informações internas, por exemplo, o livro RabbitMQ in Action.

O número de filas é limitado pela sua RAM. O número de mensagens em reprodução, por outro lado, não é limitado pela RAM, porque o RabbitMQ as pagina automaticamente em disco. Uma vez, acidentalmente, recebi quase 8 milhões de mensagens em jogo em um servidor de desenvolvimento quando não estava prestando atenção.

Também não há limite para o tamanho das mensagens, mas você deve pensar duas vezes se o tamanho de uma única mensagem exceder 512K. Acabei usando um cache de memória para passar objetos grandes entre aplicativos e apenas enviei mensagens de controle menores que incluíam uma chave memcache. Mas se você realmente deseja, pode enviar enormes objetos JPEG e binários, como arquivos JAR, como mensagens.

O número de assinantes é um limite do sistema operacional porque um assinante precisa de pelo menos um soquete TCP aberto. É claro que isso pode ser ajustado na maioria dos sistemas operacionais; portanto, sua milhagem varia e é por isso que você precisa testar seu modelo. Eu tenho usado o JMETER para testar nossos aplicativos da Web e acabei de descobrir este plugin do AMQP https://github.com/jlavallee/JMeter-Rabbit-AMQP, mas ainda não o usei. De qualquer forma, este é o tipo de teste que lhe dirá rapidamente o que o seu hardware (ou configuração da VM) manipulará razoavelmente.

A única coisa difícil que você tem é testar um grande número de consumidores nas filas de fanout. Você também pode comparar usando uma troca de tópicos, com consumidores assinando usando uma chave de ligação curinga (*) que obtém o mesmo resultado final. Tente executar este teste com o maior número possível de máquinas para garantir que você não esteja de algum modo entrando em um gargalo causado por um único servidor executando processos do consumidor. PS que o plugin Jmeter parece que também pode ser útil para simular consumidores.

Michael Dillon
fonte
6

Essa não é realmente uma pergunta respondível - há muitos fatores (a definição móvel de hardware "médio", o tamanho das mensagens na fila, o número de consumidores e a frequência com que eles pesquisam / com que rapidez eles concluem o trabalho nas mensagens, etc. .). Você realmente precisa comparar seu ambiente.

Dito isso, confira algumas dessas discussões sobre o desempenho do RabbitMQ (incluindo algumas idéias sobre como você pode avaliar sua instalação para ver o que você pode esperar do Rabbit):

voretaq7
fonte
1
Estou ciente das muitas variáveis. É por isso que mencionei coisas como hardware "médio", entre aspas, à medida que entendo o quão difusa é uma ideia. No entanto, pensei que alguns números derivados das experiências das pessoas seriam úteis. Obrigado pelas referências.
user21640
1
@ user21640 Não é apenas o hardware que adiciona confusão à sua pergunta - o comércio de alta frequência pode ter uma idéia diferente de "alta capacidade" do que você ou eu, e definições muito diferentes de desempenho aceitável. Em última análise, a única pessoa cuja experiência é importante é que você, em seu ambiente, e na minha experiência uma referência local, bem planejada vale milhares de relatórios externos quando se trata de confiança no planejamento de capacidade - você nunca sabe quando sua carga de trabalho é O caso patológico: -)
voretaq7