文章目录

  • 一 .影响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拉取参数,来调整拉取速度,达到限流的目的,但在是用时,需要注意一些实际的问题。