Ubuntu環境下RabbitMQ性能測試指南
RabbitMQ官方性能測試工具PerfTest基于Java開發,需先安裝Java 8及以上版本(推薦Java 11及以上)。在Ubuntu終端執行以下命令:
sudo apt update
sudo apt install openjdk-11-jre openjdk-11-jdk -y
# 驗證安裝
java -version
確保RabbitMQ已安裝并啟動(默認端口5672用于AMQP協議,15672用于管理界面):
# 啟動RabbitMQ服務
sudo systemctl start rabbitmq-server
# 設置開機自啟
sudo systemctl enable rabbitmq-server
# 檢查服務狀態
sudo systemctl status rabbitmq-server
PerfTest可通過以下方式獲?。?/p>
perf-test.jar
(推薦),地址:rabbitmq-perf-test/releases;PerfTest是RabbitMQ官方推薦的性能測試工具,可通過命令行配置生產者和消費者數量、消息大小、速率等參數。
java -jar perf-test.jar \
--uri amqp://guest:guest@localhost:5672 \ # RabbitMQ連接URI(默認用戶名/密碼:guest/guest)
--producers 2 \ # 生產者數量
--consumers 4 \ # 消費者數量
--rate 1000 \ # 每秒生產消息數(0表示不限速)
--queue throughput-test \ # 測試隊列名稱
--size 100 \ # 消息大?。ㄗ止潱?/span>
--autoack # 自動確認(去掉則為手動確認)
參數說明:
--uri
:RabbitMQ連接地址(集群環境可填寫多個節點,用逗號分隔);--producers
/--consumers
:生產者和消費者線程數(模擬并發負載);--rate
:消息生產速率(0表示不限速,根據測試需求調整);--queue
:測試隊列名稱(需提前創建或允許自動創建);--size
:消息體大?。▎挝唬鹤止?,如100字節、1KB等);--autoack
:啟用自動確認(消息發送后立即刪除,減少ACK開銷;若需可靠傳遞,去掉該參數并配置手動確認)。--persistent
參數(隊列和消息均持久化);topic
、fanout
),添加--exchange <name>
和--routing-key <key>
參數;--time <seconds>
參數(如--time 300
表示測試5分鐘);--output-file <path>
參數(如--output-file result.json
)。java -jar perf-test.jar \
--uri amqp://guest:guest@localhost:5672 \
--producers 3 \
--consumers 3 \
--rate 500 \
--queue persistent-queue \
--size 200 \
--persistent \
--time 60
JMeter是一款功能強大的性能測試工具,通過AMQP插件可模擬更復雜的業務場景(如HTTP與MQ混合負載、動態參數消息)。
# 安裝JMeter(Ubuntu)
sudo apt install jmeter -y
# 添加AMQP插件(通過JMeter Plugins Manager)
# 打開JMeter -> 選項 -> Plugins Manager -> 搜索“AMQP” -> 安裝“RabbitMQ AMQP Client”
通過JMeter命令行運行測試:
jmeter -n -t rabbitmq_test_plan.jmx -l result.jtl
-n
:非GUI模式運行;-t
:指定測試計劃文件;-l
:保存結果到result.jtl
文件(可通過JMeter打開分析)。http://localhost:15672
(默認賬號:guest/guest),查看“Queues”頁面的消息堆積數(Ready/Unacked)、消息速率(Publish/Consume)、消費者數量等指標;rabbitmqctl
命令獲取隊列詳情:rabbitmqctl list_queues name messages_ready messages_unacknowledged
top
、htop
、iostat
命令查看),過高可能導致性能瓶頸。--producers
)提高消息發送速率,但需避免過度并發導致網絡擁塞;--consumers
)提高消費能力,調整--prefetch-count
(每次從隊列獲取的消息數,默認1000)減少網絡往返次數;--persistent
參數),提升性能;關鍵業務需開啟,但會增加IO開銷;--uri
參數連接集群)。