文章目录
- 一 .影响RocketMq拉取速度因素
- 1.PullBatchSize 单次拉取数量
- 2.pullInterval单次拉取间隔
- 3.Quenes队列数
- 二 .拉取速度计算方法
- 三.注意事项
- 1. 队列数不能被集群节点平分
- 2 多节点速度
- 3 关于节点启动顺序
- 四 总结
一 .影响RocketMq拉取速度因素
1.PullBatchSize 单次拉取数量
Rocketmq单队列在同一时间拉取数量,可以修改最大值一般为32,如需再次扩大,需要调整服务参数。
2.pullInterval单次拉取间隔
Rocketmq 每次拉取消息的间隔时间,默认值为0无间隔,毫秒单位,1000则为一秒。
3.Quenes队列数
非配置,与topic建立,以及brocker数量有关,如broker为2主,每主两重设置,每个broker 8个队列,则为16个队列。
二 .拉取速度计算方法
速度= quenes(16)* PullBatchSize * 1000/pullInterval
Eg:
Quenes: 16
PullBatchSize: 10
pullInterval: 500
速度: 16* 30 * 1000/1000=480
三.注意事项
1. 队列数不能被集群节点平分
同一队列不能同时被分片不同节点,在限速情况下,增加节点不能增加消息发送速度。
单节点:
配置:
Quenes: 16
PullBatchSize: 10
pullInterval: 500
实际:
速度: 16* 30 * 1000/1000=480
双节点:
配置:
Quenes: 16
PullBatchSize: 10
pullInterval: 500
实际:
速度:
节点一: 8* 30 * 1000/1000=240
节点二: 8* 30 * 1000/1000=240
2 多节点速度
多节点配置,速度建议配置一致,否则配置速度快节点消息快速发送完毕,速度慢节点还在继续发送,最终发送时间会以发送慢队列时间为准。
3 关于节点启动顺序
在批量消息等发送场景,必须在发送前配置好限速速度,如果消息正在发送,如果想提高速度,不能依靠增加节点来增加拉取速度,主要有以下两方面原因:
1.增加节点仅仅会分配已有队列,队列数并没有增加
2.如果新增加节点速度配置过快,会出现部分队列先消费结束,而原节点消息还未消费完毕结束,见3.2.
故在批量发送后,想调整拉取速度,必须调整原有节点参数,原有节点需要重新启动。
当部分节点机器性能负载过高,可以考虑新加节点。
四 总结
在rocketmq使用中,经常会出现由于对方服务端性能较差,要求请求端限制流量的情况,可以调整rocketmq拉取参数,来调整拉取速度,达到限流的目的,但在是用时,需要注意一些实际的问题。