闲谈Dubbo性能调优

参数配置优先级

dubbo中的配置存在优先级,不考虑优先级的话,很有可能出现调优参数设置了却没生效的问题。

dubbo分为consumer和provider端,在配置各个参数时,其优先级如下:

  1. consumer的method配置 
  2. provider的method配置
  3. consumer的reference配置
  4. provider的service配置
  5. consumer的consumer节点配置
  6. provider的provider节点配置

方法级的配置优先级高于接口级,consumer的优先级高于provider。

参数调优

参数名作用范围默认值说明备注
threadsprovider200业务处理线程池大小 
threadspoolproviderfixed线程池类型,其值可以是 fixed、cached、limited、eager

fixed 线程池启动时就创建了固定大小的线程数,不做伸缩。 
cached 表示线程池是可伸缩的,线程空闲时间达到阈值时会被回收。 

limited 可伸缩线程池,但池中的线程数只会增长不会收缩,为了避免收缩时突然来了大流量引起的性能问题。
eager 优先创建Worker线程池。在任务数量大于corePoolSize但是小于maximumPoolSize时,优先创建Worker来处理任务。大于maximumPoolSize时,将任务放入阻塞队列中。阻塞队列充满时抛出RejectedExecutionException。

dispatcher

providerAll

一般可以选message只有请求响应消息派发到线程池,其它连接断开事件、心跳等消息,直接在IO线程上执行

设置成message不会存在Provider线程池满了,Consumer却还在等待的情况,因为默认IO线程池是无界的,一定会有线程来处理异常和应答,减少在Provider线程池打满时整个系统雪崩的风险。

iothreadsproviderCPU+1io线程池大小 
queuesprovider0

线程池队列大小,当线程池满时,排队等待执行的队列大小,

建议不要设置,当线程程池时应立即失败,重试其它服务提供机器。

 
connectionsconsumer0

对每个提供者的最大连接数,

rmi、http、hessian等短连接协议表示限制连接数,

Dubbo等长连接协表示建立的长连接个数

Dubbo协议默认共享一个长连接
activesconsumer0每服务消费者每服务每方法最大并发调用数0表示不限制
acceptesprovider0服务提供方最大可接受连接数0表示不限制
executesprovider0服务提供者每服务每方法最大可并行执行请求数0表示不限制

 

 参数在dubbo流程中应用

  1. consumer发起一个请求时,首先经过active limit(参数actives消费端最大并发调用数)进行方法级别的限制,如果超过actives则等待有其他请求完成后重试或者超时后失败。
  2. 从多个连接(connections)中选择一个连接发送数据,对于默认的netty实现来说,由于可以复用连接,默认一个连接就可以。线上业务由于有多个consumer多个provider,因此不建议增加connections参数。
  3. 连接到达provider时(如dubbo的初次连接),首先会判断总连接数是否超限(acceps),超过限制连接将被拒绝。
  4. 连接成功后,具体的请求交给io thread处理。io threads虽然是处理数据的读写,但io部分为异步,更多的消耗的是cpu,因此iothreads默认cpu个数+1是比较合理的设置,不建议调整此参数。
  5. 数据读取并反序列化以后,交给业务线程池处理,默认情况下线程池为fixed,且排队队列为0(queues),这种情况下,最大并发等于业务线程池大小(threads),如果希望有请求的堆积能力,可以调整queues参数。如果希望快速失败由其他节点处理(官方推荐方式),则不修改queues,只调整threads。
  6. execute limit(参数executes)是方法级别的并发限制,原理与actives类似,只是少了等待的过程,即受限后立即失败。
  7. tps,控制指定时间内(默认60s)的请求数。注意目前dubbo默认没有支持该参数,需要加一个META-INF/dubbo/com.alibaba.dubbo.rpc.Filter文件,文件内容为:tps=com.alibaba.dubbo.rpc.filter.TpsLimitFilter
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值