如下所示,每个rabbitmq队列除了发布和消费吞吐量外,还有一个评价MQ队列效率的更加重要的指标Consumer utilisation ,如下:
在最佳利用率情况下,这个值能够达到100%,并且生产中总是应该达到100%。但在很多系统中,这个值可能低于5%。这一般是由于下列原因所致(这三者我们都遇到过):
1、消费者太少;
2、消费端的ack太慢;
3、消费者太多;
4、非自动ack;
4、增加fetch值(这个根据我们的实际经验,lan内影响很有限)。
注意:虽然增加消费者可以提高吞吐量,但是一定要注意消息的处理顺序是否会对业务正确性造成影响,比如典型的股票买卖和银行转账就会有问题,此时架构设计的水平就出来了。
rabbitmq相关的性能优化可以参考如下:
https://www.cloudamqp.com/rabbitmq_ebook.html
RabbitMQ Cookbook 第8章