haproxy+rabbitmq集群及单点性能测试方案(通用)

本文档提供了rabbitmq的性能测试方案,包括单点和集群测试,涉及不同确认机制、应答模式及消息持久化的场景。测试工具有rabbitmq-perf-test,测试指标包括消息发布速度等,通过调整生产者和消费者的数量来评估性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:该测试方案文档旨在提供通用有效的rabbitmq性能测试方案,无论是单点rabbitmq还是rabbitmq集群,所以,这里没有必要提供具体的测试机器、操作系统、应用的信息。所有测试操作都是博主自己查阅官方文档实践操作过的,所以拿出来供大家参考。

一,背景说明

1,测试工具:

rabbitmq-perf-test-2.0.0(官方提供)

下载地址:https://bintray.com/rabbitmq/java-tools/download_file?file_path=perf-test%2F2.0.0%2Frabbitmq-perf-test-2.0.0-bin.tar.gz

2,测试工具需要环境:

jdk-8u151-linux-x64,说明JDK8即可

3,测试工具根目录:

/opt/software/rabbitmq-perf-test-2.0.0

4,工作目录:

/opt/software/rabbitmq-perf-test-2.0.0

5,命令执行示例:

./bin/runjava com.rabbitmq.perf.PerfTestMulti ./publish-consume-spec-persistent-pc1-cc0-simp.js ./publish-consume-spec-persistent-pc1-cc0-simp-result.js

6,测试目的:

获取平均速度或实时速度;

messages平均发布速度(当消费者数量为0的时候才需要计算该值):即最终执行完队列中的消息数量除以60;

messages实时发布速度(当消费者数量为0的时候才需要计算该值):打开management-plugin的WEB界面------>Overview------>Message rates last minute,在测试过程中查看此处的值;

messages实时发布速度(当消费者数量不为0的时候才需要计算该值):打开management-plugin的WEB界面------>Overview------>Message rates last minute,在测试过程中查看此处的值;

 

 

7,注意事项:

1,消费者数量为0,只有生产者的测试,每次测试完之后都需要在rabbitmq的management-plugin的web界面把limu01这个queue删除,不然messages会累积占用内存;

2,消费者和生产者数量都不为0的情况下,测试完之后对应的queue就会被消费掉,无需手动删除;

 

二,具体测试操作

(一)测试指标:no persistent;no confirm;no ack;指定queue名称,共8次,每次执行60s;

一个runjava进程:

1,1个生产者,0个消费者(0个消费者就是no ack了,如果有消费者,默认就是auto ack,auto ack )

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'min-msg-size': 200,

'producer-count': 1,

'consumer-count': 0]}]

2,2个生产者,0个消费者(0个消费者就是no ack了,如果有消费者,默认就是auto ack,auto ack )

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'min-msg-size': 200,

'producer-count': 2,

'consumer-count': 0]}]

3,3个生产者,0个消费者(0个消费者就是no ack了,如果有消费者,默认就是auto ack,auto ack )

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'min-msg-size': 200,

'producer-count': 3,

'consumer-count': 0]}]

4,4个生产者,0个消费者(0个消费者就是no ack了,如果有消费者,默认就是auto ack,auto ack )

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'min-msg-size': 200,

'producer-count': 4,

'consumer-count': 0]}]

5,5个生产者,0个消费者(0个消费者就是no ack了,如果有消费者,默认就是auto ack,auto ack )

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'min-msg-size': 200,

'producer-count': 5,

'consumer-count': 0]}]

6,6个生产者,0个消费者(0个消费者就是no ack了,如果有消费者,默认就是auto ack,auto ack )

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'min-msg-size': 200,

'producer-count': 6,

'consumer-count': 0]}]

7,7个生产者,0个消费者(0个消费者就是no ack了,如果有消费者,默认就是auto ack,auto ack )

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'min-msg-size': 200,

'producer-count': 7,

'consumer-count': 0]}]

8,8个生产者,0个消费者(0个消费者就是no ack了,如果有消费者,默认就是auto ack,auto ack )

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'min-msg-size': 200,

'producer-count': 8,

'consumer-count': 0]}]

 

(二)测试指标:no persistent;confirm;no ack;指定queue名称,共1次;每次执行60s。

一个runjava进程:

1,4个生产者,0个消费者

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': 0,

'min-msg-size': 200,

'producer-count': 4,

'consumer-count': 0]}]

 

(三)测试指标:no persistent;no confirm;auto ack;指定queue名称,共4次;每次执行60s。

一个runjava进程:

说明:生产者使用no confirm,而且数量比消费者多,是为了确保生产速度不会成为消费速度的瓶颈。

1,4个生产者,3个消费者,multi-ack-every 0秒

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'auto-ack': true,

'min-msg-size': 200,

'producer-count': 4,

'consumer-count': 3]}]

 

2,4个生产者,3个消费者,multi-ack-every 10秒

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'auto-ack': true,

'multi-ack-every': 10,

'min-msg-size': 200,

'producer-count': 4,

'consumer-count': 3]}]

 

3,4个生产者,3个消费者,multi-ack-every 30秒

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'auto-ack': true,

'multi-ack-every': 30,

'min-msg-size': 200,

'producer-count': 4,

'consumer-count': 3]}]

 

4,4个生产者,3个消费者,multi-ack-every 60秒

[{'uri': 'amqp://test:123456@10.240.0.4:5672/test',

'name': 'consume',

'type': 'simple',

'params': [{'time-limit': 60,

'queue-names': ['limu01'],

'confirm': -1,

'auto-ack': true,

'multi-ack-every': 60,

'min-msg-size': 200,

'producer-count': 4,

'consumer-count': 3]}]

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值