Dubbo性能调优参数以及原理

Dubbo作为一个服务治理框架,功能相对来说比较完善,性能也挺不错。但很多同学在使用dubbo的时候,只是简单的参考官方说明进行配置和应用,并没有过多的去思考一些关键参数的意义,最终做出来的效果总是差强人意,接下来我们将给大家详细的介绍Dubbo调优的常用参数以及原理。
一、Dubbo调用模型
在这里插入图片描述

二、常用性能调优参数
在这里插入图片描述

三、源码以及原理分析

上面的第二节讲解了每个参数的含义,那么接下来我们一起看看具体的源码实现。

3.1 threads 参数

目标类:FixedThreadPool.java
在这里插入图片描述

目标类:LimitedThreadPool.java
在这里插入图片描述

其中,Constants.DEFAULT_QUEUES=200。thread参数配置的是业务处理线程池的最大(或核心)线程数。

3.2 iothreads 参数

目标类:NettyServer.java
在这里插入图片描述

3.3 queues 参数

分别在 FixedThreadPool.java、LimitedThreadPool.java 和 CachedThreadPool.java 中使用,代码详情见上面的章节。 由代码可见,默认值为 0,表示使用同步阻塞队列;如果 queues 设置为小于 0 的值,则使用容量为Integer.MAX_VALUE 的阻塞链表队列;如果为其他值,则使用指定大小的阻塞链表队列。

3.4 connections 参数

目标类:DubboProtocol.java
在这里插入图片描述

目标类:Dubbolnvoker.java
在这里插入图片描述在这里插入图片描述

以上可见,默认值为0,表示针对每个 Provider,所有客户端共享一个长连接;否则,建立指定数量的长连接。在调用时,如果有多个长连接,则使用轮询方式获得一个长连接。

3.5 actives参数

目标类: ActiveLimitFilter.java
在这里插入图片描述在这里插入图片描述

Consumer 调用时,统计服务和方法维度的调用情况,如果并发数超过设置的最大值,则阻塞当前线程,直到前面有请求处理完成。

3.6 accepts参数

目标类: AbstractServer.java
在这里插入图片描述

当连接数大于最大值时,关闭当前连接。

3.7 executes参数

目标类: ExecuteLimitFilter.java
在这里插入图片描述

Provider处理请求时,统计方法维度的调用情况,如果并发数超过设置的最大值,则阻直接抛出异常。

猜你喜欢

转载自blog.csdn.net/xukaiqiang123/article/details/129187463
今日推荐