(一)ACK机制 生产者<->队列 和 队列<->消费者
测试环境
硬件:
三台开发测试机(一生产者,一消费者,一MQ服务器): Intel(R) Xeon(R) CPU E5620 @ 2.40GHz (16核),24G RAM, 普通磁盘。
软件:
Erlang虚拟机: R16B
RabbitMQ:2.8.2
网络
Ping:0.220ms
Netperf: 941.43 (10^6bits/sec)
测试结果
测试# | Ack1 | Ack2 | Qos (prefetchcout = 200) | Vhost数 | 包大小 | QPS |
1 | X | X | X | 1 | 100bytes | 33733 |
2 | X | X | X | 1 | 1Kb | 32334 |
3 | X | X | X | 2 | 1Kb | 54295 |
4 | X | X | X | 3 | 1Kb | 68636 |
5 | X | X | X | 3 | 100bytes | 74339 |
6 | O | X | X | 1 | 100bytes | 14526 |
7 | X | O | X | 1 | 100bytes | 14216 |
8 | X | X | O | 1 | 100bytes | 30241 |
9 | O | O | X | 1 | 100bytes | 11755 |
10 | X | O | O | 1 | 100bytes | 11548 |
11 | O | O | O | 1 | 100bytes | 9149 |
12 | O | O | O | 2 | 100bytes | 17288 |
13 | O | O | O | 3 | 100byte | 21748 |
说明:O 表示启用 X表示不启用 ,Ack1表示生产者与MQ之间的确认机制,Ack2为消费者与MQ之间的确认机制。所有测试都开启了消息持久化。
分析
1. 从测试#1 -#3 以及 #11-#13的对比可以看出增加vhost的数量可以显著的提高rabbimq服务器的性能。
2. 从测试#1和#6的对比可以看出,开启Ack1会明显降低QPS,约降低了60%。
3. 从测试#1 和#7的对比可以看出,开启Ack2也会明显降低QPS。
从测试#1 和#8 的对比可以看出,开启Qos会降低QPS。