如下所示,每个rabbitmq队列除了发布和消费吞吐量外,还有一个评价MQ队列效率的更加重要的指标Consumer utilisation ,如下:

rabbitmq性能优化之Consumer utilisation_rabbitmq

在最佳利用率情况下,这个值能够达到100%,并且生产中总是应该达到100%。但在很多系统中,这个值可能低于5%。这一般是由于下列原因所致(这三者我们都遇到过):

1、消费者太少;

2、消费端的ack太慢;

3、消费者太多;

4、非自动ack;

rabbitmq性能优化之Consumer utilisation_rabbitmq_02

4、增加fetch值(这个根据我们的实际经验,lan内影响很有限)。

 注意:虽然增加消费者可以提高吞吐量,但是一定要注意消息的处理顺序是否会对业务正确性造成影响,比如典型的股票买卖和银行转账就会有问题,此时架构设计的水平就出来了。

rabbitmq相关的性能优化可以参考如下:

https://www.cloudamqp.com/rabbitmq_ebook.html

RabbitMQ Cookbook 第8章

花若盛开,蝶自飞来,你若精彩,幸福开怀!2020年12月11日-18日