RabbitMQ性能白皮書
更新時間 2025-07-03 13:57:27
最近更新時間: 2025-07-03 13:57:27
分享文章
測試場景
主要測試RabbitMQ不同產品規格在發送2KB大小的消息時的性能表現。當RabbitMQ實例是RabbitMQ引擎時,隊列為非持久化、非鏡像隊列,實時生產實時消費,隊列無積壓。當RabbitMQ實例是云原生引擎時,隊列為持久化雙副本隊列,實時生產實時消費,當消費速率跟不上生產時,隊列存在積壓。
測試環境
步驟一:購買實例
| 名稱 | 節點數量 | 規格 | 引擎類型 | 磁盤類型 | 磁盤空間 |
|---|---|---|---|---|---|
| RabbitMQ-01 | 3 | 計算增強型4核8GB | RabbitMQ引擎 | 超高IO | 500GB |
| RabbitMQ-02 | 3 | 計算增強型8核16GB | RabbitMQ引擎 | 超高IO | 500GB |
| RabbitMQ-03 | 3 | 計算增強型16核32GB | RabbitMQ引擎 | 超高IO | 500GB |
| RabbitMQ-04 | 3 | 海光計算增強型4核8GB | RabbitMQ引擎 | 超高IO | 500GB |
| RabbitMQ-05 | 3 | 海光計算增強型8核16GB | RabbitMQ引擎 | 超高IO | 500GB |
| RabbitMQ-06 | 3 | 海光計算增強型16核32GB | RabbitMQ引擎 | 超高IO | 500GB |
| RabbitMQ-07 | 3 | 鯤鵬計算增強型4核8GB | RabbitMQ引擎 | 超高IO | 500GB |
| RabbitMQ-08 | 3 | 鯤鵬計算增強型8核16GB | RabbitMQ引擎 | 超高IO | 500GB |
| RabbitMQ-09 | 3 | 鯤鵬計算增強型16核32GB | RabbitMQ引擎 | 超高IO | 500GB |
步驟二:獲取性能測試工具
性能測試采用RabbitMQ官方測試工具,點擊鏈接下載。
rabbitmq-perf-test-2.8.1-bin.tar.gz
步驟三:購買客戶端服務器
購買3臺ECS服務器(資源池、可用區、虛擬私有云、子網、安全組與RabbitMQ實例保持一致,帶寬要大于等于RabbitMQ實例帶寬,為了運行更多的測試程序,建議采用更大的內存)
購買完成后需要進行如下操作:
-
安裝JDK
yum install -y java-1.8.0-openjdk-devel.x86_64 -
下載性能測試工具并解壓
tar -zxvf rabbitmq-perf-test-2.8.1-bin.tar.gz
步驟四:測試命令
nohup ./runjava com.rabbitmq.perf.PerfTest -h amqp://user:123456@127.0.0.1:5672 -s2048 -r 2000 -x1 -X1 -y1 -Y1 -e $2_$i -u $2_$i -f persistent >out_$i.out 2>&1 &
- user:應用用戶
- pwd:密碼
- hostip:rabbitmq服務端ip
- vhost:虛擬機名
- -s2048:消息大小2kb
- -x1 -X1:1個生產者,每個生產者1個信道
- -y1 -Y1:1個消費者,每個消費者1個信道
- -u:隊列名
- -e:交換器名
- -r:生產tps
- -f persistent:持久化
- -a:自動確認
步驟五:測試過程
注意隊列無需提前創建,每個壓測進程設置隊列名必須不同,隊列才會均衡創建到各個節點,達到性能最佳。
- 每個壓測進程設置一個生產者、一個消費者、生產tps設置2000。以8C32G云主機為例,一個云主機最多可以運行60個壓測進程
- 登錄客戶端機器,執行壓測命令,觀察消息生產消費tps;
- 持續增加壓測進程,直到消費tps跟不上生產tps;
- 觀察半小時后,記錄生產消費TPS,以及機器和磁盤狀態。
測試結果
引擎類型 規格 節點數量 TPS實測 RabbitMQ引擎 4C8G 計算增強型 3 80000 8C16G 計算增強型 3 140000 16C32G 計算增強型 3 200000 4C8G 海光計算增強型 3 22000 8C16G 海光計算增強型 3 41000 16C32G 海光計算增強型 3 90000 4C8G 鯤鵬計算增強型 3 61500 8C16G 鯤鵬計算增強型 3 120000 16C32G 鯤鵬計算增強型 3 280000