Introdução

Este Spike foi realizado com a finalidade de avaliar a carga de mensagens suporta pelo RabbitMQ que esta instalado na Estrutura atual da TOTVS ( amqp://10.171.50.32 : 5672 )

Desenvolvimento

Para este teste foram testados 3 cenário conforme descritos a seguir, utilizando um ferramenta de teste de performance disponibilizada pela Equipe de desenvolvimento do Rabbbit ( https://github.com/rabbitmq/rabbitmq-perf-test )

Cenários 1

Realizando teste com 50 producers (2 X 25 conexões) e 50 consumers (2 X 25 conexões) e mensagem com tamanho de 10kb.:

Neste cenário, o Rabbit foi reiniciado, devido ao acúmulo das mensagem, ou seja, ficaram mais de 2,5 milhões de mensagens presas nas filas, isso fez a memoria passar o limite definido. todavia outras medições se mostraram controladas.


Cenário 2

Realizando teste com 50 producers (2 X 25 conexões) e 50 consumers (2 X 25 conexões) e mensagem com tamanho de 4b.:

Devido ao tamanho reduzido da mensagem, não acaba gerando acúmulo no servidor assim ele acaba estabilizando o consumo da memória:

Cenário 3

Realizando teste com 100 producers (4 X 25 conexões) e 100 consumers (4 X 25 conexões) e mensagem com tamanho de 4b.:

Estabilizou, entretanto consumindo uma memória media 3X maior que o teste anterior.

Conversando com o Felipe Conti, neste último teste o consumo de processo também se mostrou bem alto.

Comparativo


Cenário 1Cenário 2Cenário 3
Nº de mensagens2.5 Milhões48 mil2 mil
Queda serviçoSimnãonão
Consumo de memoriamais de 3.5 gb1 gb3gb

Conclusões

Por ser uma ferramenta bem otimizada, suporta uma quantidade bem significativa em memoria, lembrando que no cenário houve um acumulo devido ao trafego das mensagem.

Em contra ponto, o consumo de processamento aumentou consideravelmente quando aumentado o numero de consumers.

Para identificar os números ideais, precisamos colocar a ferramenta em um ambiente semelhante ao que será utilizado, pois nem tanto pela quantidade se identificou problema, mas sim com relação a comunicação entre os publisher e consumer, gerando assim o congestionamento na fila.

Elaboração

 

Apresentação

 

Implementação

 

Issue JIRA

DEAITOOLS-222 - Obtendo detalhes do item... STATUS