IBM Cloud Docs
Desempenho

Desempenho

As implementações do IBM Cloud® Messages for RabbitMQ podem ser manualmente escaladas para o seu uso ou configuradas para ajuste automático de escala sob certas condições de recurso. Quando estiver ajustando o desempenho de sua implementação, considere alguns fatores.

Monitorando a sua implementação

As implementações do Messages for RabbitMQ oferecem uma integração com o serviço do IBM Cloud® Monitoring para monitoramento básico do uso de recurso em sua implementação. Muitas das métricas disponíveis, como o uso de disco e as IOPS, são apresentadas para ajudá-lo a configurar o ajuste automático de escala em sua implementação. Observar as tendências em seu uso e configurar o ajuste automático de escala para responder a elas pode ajudar a aliviar problemas de desempenho antes que os seus bancos de dados se tornem instáveis devido ao esgotamento de recursos.

Uso de memória do RabbitMQ

O RabbitMQ fornece um detalhamento robusto do uso de memória, que pode fornecer informações sobre como os recursos de memória são alocados e sendo usados em sua implementação Mais particularmente, as conexões, os espelhos de fila e as mensagens acumuladas usam a memória. Se o seu caso de uso requer muitas conexões abertas por vez, você pode querer considerar a possibilidade de aumentar a memória. Da mesma forma, se você tiver filas que contenham apenas mensagens transientes que não precisam de replicação, será possível diminuir o uso da memória ajustando a sua política de espelhamento. Alterações na política de espelhamento, em que as mensagens têm menos ou nenhum espelho, podem fazer com que as mensagens sejam excluídas nas reinicializações de nós e essas mensagens sejam excluídas para sempre.

Ocasionalmente, o RabbitMQ pode experimentar aumentos de memória. Especificamente, com implementações do Messages for RabbitMQ, atualizações e manutenção nas quais reiniciamos ou excluímos um nó, faz com que o uso de memória aumente para a ressincronização do nó novo ou reiniciado. Se o seu RabbitMQ usar consistentemente uma alta porcentagem de sua memória disponível, um desses aumentos poderá fazer que a sua implementação fique sem memória e trave. É uma boa ideia escalar a sua memória para que ela possa acomodar a ressincronização de um nó.

Alarmes de memória do RabbitMQ

Por padrão, quando o servidor RabbitMQ usa acima de 40% da RAM disponível, ele eleva um alarme de memória e bloqueia mensagens recebidas de publicadores. O alarme de memória é limpo se os consumidores usarem o suficiente das mensagens ou as mensagens sejam movidas para o disco. Assim que o alarme de memória for limpo, o serviço normal continuará e os publicadores serão desbloqueados. Observe que isso não evita que o servidor RabbitMQ use mais de 40% da memória alocada. Este é meramente o ponto no qual os publicadores são limitados. Para obter mais informações, consulte RabbitMQ documentação.

Alarmes de disco do RabbitMQ

Por padrão, quando o servidor RabbitMQ detectar que o espaço livre em disco caiu abaixo de um determinado limite, ele disparará um alarme de disco. O limite para Messages for RabbitMQ é 80% do tamanho do disco de sua implementação. O alarme bloqueia mensagens recebidas de publicadores e evita que mensagens na memória sejam gravadas em disco. O alarme é por todo o cluster, de modo que se o espaço em disco em um nó ficar muito baixo, o alarme bloqueia em todos os nós. Para limpar o alarme, as mensagens que foram gravadas em disco precisam ser consumidas e aquele espaço seja recuperado ou ajuste a escala de sua implementação para um tamanho de disco maior.

Mais informações sobre os alarmes de memória podem ser localizadas na documentação do RabbitMQ

IOPS de disco

O número de operações de entrada/saída por segundo (IOPS) é limitado pelo tipo de volume de armazenamento sendo utilizado. Os volumes de armazenamento para as implementações do Messages for RabbitMQ são provisionados em Volumes do Endurance de armazenamento de bloco na camada de 10 IOPS por GB. Os limites de IOPS podem afetar o rendimento da mensagem e as operações de armazenamento do RabbitMQ. Atingir esses limites pode fazer com que o disco se atrase na recuperação de espaço após as mensagens serem consumidas, causando alarmes de disco e a regulagem do publicador até a atividade desacelerar. É possível aumentar as IOPS de número disponíveis para a sua implementação, aumentando o espaço em disco.

Filas de quorum

A alta disponibilidade pode ser gerenciada com filas quorum. Usar filas de quorum impacta o desempenho; são necessários mais memória e espaço em disco para o WAL usado para manter o estado para as operações. Também é necessária mais E/S de disco, pois ele persiste todos os dados em disco. Se você implementou filas de quorum ou as estiver considerando, a documentação do RabbitMQ possui um bom informativo do seu efeito tanto no uso de recursos quanto no desempenho.

Monitoramento de alarme do RabbitMQ

Quando um alarme de disco ou memória é acionado, o RabbitMQ emite uma connection.blocked notificação para publicar conexões. Muitos drivers suportam o protocolo necessário para capturar a notificação para que seja possível projetar o seu aplicativo para responder a alarmes do RabbitMQ.

Também é possível monitorar alarmes por meio da API de HTTP do RabbitMQ. Use os terminais GET /api/nodes e procure mem_alarm e disk_free_alarm na resposta.

Para mais verificações relacionadas a alarmes de memória, é possível reunir informações relacionadas à memória de um único nó usando o terminal GET /api/nodes/{node}/memory.

Verificações de funcionamento padrão

A API do RabbitMQ HTTP fornece um par de terminais de verificação de funcionamento para verificar o estado dos nós do RabbitMQ em sua implementação.

As verificações de funcionamento consomem recursos do sistema. Para implementações menores e menos ocupadas, a verificação de funcionamento não deve demorar muito para fornecer uma resposta. Implementações maiores ou implementações sob carga podem levar algum tempo para retornar resultados.