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.
performance
rabbitmq
user21640
fonte
fonte
Respostas:
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.
fonte
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):
fonte