dubbo性能调优

dubbo:protocol

threadpool 和 threads
threadpool 表示线程池类型。其值可以是 “fixed” 或 “cached”。默认值:fixed

fixed 表示线程池启动时就创建了固定大小的线程数,不做任何伸缩。
其创建原理与java内置的 Executors.newFixedThreadPool() 相同。
相关dubbo代码:com.alibaba.dubbo.common.threadpool.support.fixed.FixedThreadPool

cached 表示线程池是可伸缩的,线程空闲时间达到阈值时会被回收。这个阈值默认是1分钟。
其创建原理与java内置的 Executors.newCachedThreadPool() 相同。
相关dubbo代码:com.alibaba.dubbo.common.threadpool.support.cached.CachedThreadPool

对于刚开始性能调优的dubbo服务来说,“默认fixed线程池+200线程”的配置往往是最先需要优化的点。
一旦并发请求数超过200,就会出现异常“Thread pool is EXHAUSTED”。

另,线程池的类型选择也应遵循具体业务场景。
如果请求频繁,cached 意义也不会很大,因为线程根本没有空闲后被回收的机会。
如果请求不频繁,fixed 类型的线程池中大量线程空闲在那也浪费资源

dispatcher

dispatcher 表示协议的消息派发模式。dubbo协议默认值为 “all”。(dubbo服务默认采用dubbo协议)
一般可以选“message”,即只有请求响应消息派发到线程池,其它连接断开事件、心跳等消息,直接在IO线程上执行。

dubbo:service

timeout

Dubbo服务支持在服务端和客户端配置服务调用超时时间。它们的默认值都是1000毫秒。
如果服务端和客户端都配置了 timeout,则以客户端的配置为准。
通常,除非客户端业务规则明确规定超时时间,不会在客户端配置 timeout。所以服务端的 timeout 配置很关键。
timeout 与具体业务和服务部署方式与环境的关系很大,需要根据实际测试数据调整。

对于负载稍高的服务,默认的1000毫秒超时时间,确实容易引发 TimeoutException。
如果服务传输的数据量较大,调用耗时也会非常可观。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值