`

【Dubbo】最常用的dubbo性能调优点

阅读更多

这里只提供最常用的Dubbo服务调优点简要说明,旨在用更小的成本,获得更多性能收益。
这里的“成本”是综合性的,包括 时间、硬件、技术学习等。即,此指南追求“实用性”。
“最常用”、“简要”也意味着这不是一份全面的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

 

threads 表示线程池最大线程数。

对于 fixed 类型的线程池,如果未配置该属性,则使用默认值 200,即固定200个线程。

对于 cached 类型的线程池,如果未配置该属性,则使用默认值 Integer.MAX_VALUE (2147483647)。

 

对于刚开始性能调优的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。
如果服务传输的数据量较大,调用耗时也会非常可观。

 

分享到:
评论

相关推荐

    Spring boot整合Dubbo

    Dubbo,由阿里巴巴开发,是一款高性能、轻量级的开源 Java RPC 框架,主要用于构建微服务架构。它主要包含四个核心角色:消费者(Consumer)、生产者(Provider)、注册中心(Registry)和监控中心(Monitor)。其中...

    Dubbo面试.pdf

    Dubbo作为一个分布式高性能、透明化的RPC服务框架,提供了服务自动注册与发现、负载均衡与容错、以及高度的可扩展性,其支持多种协议,并且每种协议都有其特定的应用场景和优缺点。在进行面试时,回答关于Dubbo的...

    Dubbo+zookeeper

    其次,Dubbo 是一款高性能的 Java RPC 框架,可以和 Spring 框架无缝集成。Dubbo 提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。Dubbo 的架构图包括 Provider 暴露服务...

    spring boot dubbo 集成 脚手架

    Spring Boot和Dubbo是两个非常重要的Java开发框架,Spring Boot简化了Spring应用的初始化和配置,而Dubbo则是一个高性能、轻量级的服务治理框架。本文将深入探讨如何在Spring Boot项目中集成Dubbo,创建一个高效的...

    dubbo rest rpc相关jar包

    Dubbo是一款由阿里巴巴开源的高性能、轻量级的Java服务框架,它主要关注服务治理和服务调用。在标题和描述中提到的“dubbo rest rpc相关jar包”是指Dubbo支持RESTful API调用的扩展模块,这使得Dubbo能够与更广泛的...

    dubbo从入门到精通教程

    dubbo是一种分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。它是阿里巴巴SOA服务化治理方案的核心框架,每天为2000+个服务提供300000000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。...

    Dubbo管理控制台的安装.docx

    Dubbo管理控制台的缺点包括需要单节点部署,且不需要高可用,因此需要注意其可用性和性能问题。 Dubbo管理控制台是一个功能强大且易于使用的管理工具,对于服务提供者和服务消费者的管理具有重要作用。

    Spring alibaba dubbo

    整合Spring Alibaba Cloud与Dubbo,可以充分利用两者的优点。例如,使用Nacos作为服务注册与发现的中心,服务提供者在启动时会将自身注册到Nacos,而服务消费者则通过Nacos发现并调用服务。同时,Dubbo的RPC能力可以...

    Dubbo面试题集合.pdf

    - **定义**:Dubbo是一个分布式、高性能、透明化的RPC服务框架,提供服务自动注册、自动发现等高效服务治理方案。 - **主要应用场景**:透明化的远程方法调用,软负载均衡及容错机制,服务自动注册与发现。 - **核心...

    SpringCloud和Dubbo的详细解释和比较

    SpringCloud的全面性可能更受企业级应用的青睐,而Dubbo在性能和轻量级服务治理方面的优势,可能更适合对性能和资源有严格要求的场景。无论选择哪种方案,它们都能帮助开发者构建可扩展、高可用的微服务架构。

    Dubbo简介.docx

    Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,由阿里巴巴开发并维护。它旨在提供一个高效、透明的远程服务调用解决方案,使得开发者可以像调用本地方法一样调用远程服务。Dubbo 的核心特性包括服务自动注册、...

    dubbo直连.zip

    总的来说,Dubbo直连是Dubbo框架中的一种重要调用模式,它简化了服务调用流程,提升了性能,但也需要根据实际情况权衡其优缺点。理解并掌握Dubbo直连的配置和使用,对于构建高效、可靠的微服务架构具有重要意义。

    毕设项目:基于Springboot,Dubbo 等开发的分布式抽奖系统.zip

    Dubbo 是阿里巴巴开源的一款高性能、轻量级的Java远程服务调用框架,它致力于提供面向服务的高性能和透明化的RPC(Remote Procedure Call)服务。Dubbo 提供了服务注册与发现、负载均衡、容错机制等核心功能,使得...

    springboot+dubbo+zk+mybatis框架搭建以及sql脚本

    Dubbo是阿里巴巴开源的一款高性能、轻量级的服务治理框架,主要用于实现服务间的远程调用。它提供服务注册、服务发现、负载均衡、容错机制等功能,是微服务架构中不可或缺的一部分。Dubbo支持多种通信协议,如RPC、...

    Dubbo入门教程

    - **Dubbo**是一款由阿里巴巴开源的分布式服务框架,旨在帮助开发者构建高性能和透明化的RPC远程服务调用。 **特点:** - **高性能**:提供了高效的RPC调用机制,支持多种通信协议和序列化方式。 - **透明化**:...

    spring cloud alibaba 集成dubbo示例

    将 Spring Cloud Alibaba 集成 Dubbo,可以充分利用两者的优点,实现微服务架构下的服务治理和高性能通信。以下是集成步骤: 1. **引入依赖**:在 Maven 或 Gradle 的构建文件中,引入 Spring Cloud Alibaba Dubbo ...

    基于springcloud构建dubbo

    将Spring Cloud与Dubbo结合,可以充分利用两者的优点。Spring Cloud的全面服务治理和Dubbo的高性能RPC相结合,可以构建出更健壮的微服务架构。具体步骤如下: 1. **集成准备**:首先,确保项目已经集成了Spring ...

    dubbo和zookeeper的关系.docx

    Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了从服务注册、服务发现、服务调用到服务治理等一系列的功能。Zookeeper,另一方面,是一个分布式协调服务,广泛用于分布式环境中的配置管理、命名服务、分布式...

    java面试题_微服务--dubbo(41题).zip

    比如,如何在生产环境中优化Dubbo性能,如何处理服务间的依赖关系,以及如何设计健壮的微服务架构。 以上只是对Java面试中涉及微服务和Dubbo的一些基本知识点的概述,实际的面试可能会深入到具体的技术细节、最佳...

Global site tag (gtag.js) - Google Analytics