Rabbitmq - Expectativas razoáveis de desempenho / escala

13

Eu ficaria grato se alguém pudesse me apontar na direção de algumas figuras / limitações de escala razoável em rabbitmq (em hardware "médio", fwiw) ou postar sua experiência com seu desempenho. Eu estou tentando ter uma noção da capacidade de número de filas, número de assinantes em filas, implicações de desempenho de ter centenas ou milhares de ouvintes em filas de fanout, qualquer número que alguém possa ter em execução em um ambiente de alta capacidade. / p>     

por user21640 10.04.2012 / 17:57

2 respostas

11

Antes 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 é dependente da implementação, por isso ajuda a ler sobre os internos, por exemplo, o livro RabbitMQ em Ação.

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 automaticamente as envia para o disco. Uma vez eu 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 enviei apenas mensagens menores de controle que incluíam uma chave memcache. Mas se você realmente quiser, 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 web e acabei de descobrir esse link do plugin AMQP, mas ainda não usei isto. Em qualquer caso, esse é o tipo de teste que informa rapidamente o que seu hardware (ou configuração de VM) irá processar.

A única coisa difícil que você tem é testar um grande número de consumidores para as filas de fanout. Você também pode querer comparar usando uma troca de tópicos, com os consumidores assinando usando uma chave de associação curinga (*) que atinge o mesmo resultado final. Tente executar esse teste com tantas máquinas diferentes quanto possível para garantir que você não esteja, de alguma forma, se deparando com um gargalo causado por um único servidor que está executando processos do consumidor. P.S. que o plugin Jmeter parece também ser útil para simular consumidores.

    
por 11.07.2012 / 00:24
6

Esta não é realmente uma pergunta que possa ser respondida - há muitos fatores (a definição em movimento do hardware "médio", o tamanho das mensagens na fila, o número de consumidores e a frequência de pesquisa / a rapidez com que concluem o trabalho) mensagens, etc.). Você realmente precisa avaliar seu ambiente.

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

por 10.04.2012 / 20:39