dubbo调用知多少?

news2024/9/21 0:38:46

一 dubbo超时时间的设置

定义:这里说的超时,是针对dubbo provider调用方来说的,比如提供方执行需要3秒,设置了超时时间1秒(默认),则consumer调用方会报超时错误,但实际上服务提供方依然在正常执行方法逻辑。

dubbo默认超时时间1000ms,但对于有些业务可能不满足需求,可根据业务场景定义超时时间。

超时时间设置可以选择在consumer端、provider端全局、接口、或方法设置。

优先级:

1) 方法级配置级别优于接口级别,即小Scope优先
2) Consumer端配置 优于 Provider配置 优于 全局配置

关于如何设置超时时间及优先级 可参考这位博主的文章  阐述Dubbo接口调用的超时机制_dubbo调用超时设置-CSDN博客

博主在自己公司的项目里是在服务提供者server端设置的超时时间是30秒。

 <dubbo:service timeout="30000" interface="***ScheduleJobService" ref="scheduleJobService"/>

但实际方法执行时间超过了30秒导致dubbo调用超时;因为dubbo默认的超时重试次数为2,所以会看到一个定时任务执行了3次(第1次调用 + 2次超时重试)。幸好该任务是支持重复执行的,否则又是个大坑! 

org.apache.dubbo.rpc.RpcException: Failed to invoke the method delBindedSignInfoDayBefore 
in the service ****.ScheduleJobService. 
Tried 3 times of the providers [192.168.11.15:5004, 192.168.11.5:5004, 192.168.11.30:5004] (3/6) from the registry nacos.server:8848 on the consumer 192.168.11.15 using the dubbo version 2.7.5. Last error is: Invoke remote method timeout. method: 
delBindedSignInfoDayBefore, 
provider: dubbo://192.168.11.5:5004/*****.ScheduleJobService?anyhost=true&application=api-schedule&category=providers&check=false&checkDataToSignService.async=true&checkDataToTimeOutService.async=true&checkIsExistOverdueData.async=true&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&init=false&interface=****ScheduleJobService....

如何让任务只执行一次呢?对于定时任务逻辑耗时通常都比较长,设置多大的超时时间都不合适,最好在调用端设置成异步调用。

<dubbo:reference id="scheduleJobService" interface="****.ScheduleJobService">		
		<dubbo:method name="delBindedSignInfoDayBefore" async="true"/>
	</dubbo:reference>

二 dubbo重试次数设置

dubbo默认的超时重试次数为2,也可通过 retries=自定义重试次数

三 dubbo线程池设置

在项目中cat监控发现凌晨有rpc异常,具体异常信息如下

	org.apache.dubbo.rpc.RpcException: Failed to invoke remote method: approveNotify, provider: dubbo://172.16.6.178:4003/***.DoctorNotifyService?anyhost=true&application=api-am&category=providers&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&init=false&interface=***.DoctorNotifyService&metadata-type=remote&methods=faceNotify,certDownNotify,changePhoneNotify,invoiceNotify,bindFirmNotify,enableNotify,approveNotify,deleteNotify,payNotify,cancleNotify,uploadUPic,relapseNotify,disableNotify&owner=lt&path=****DoctorNotifyService&payload=53886080&pid=22900&protocol=dubbo&qos.enable=false&reference.filter=Consumer&register.ip=192.168.1.15&release=2.7.22&remote.application=ywq-service-notify&service.filter=Provider,-exception&service.name=ServiceBean:/***.DoctorNotifyService&side=consumer&sticky=false&timeout=20000&timestamp=1722420199999, cause: org.apache.dubbo.remoting.RemotingException: Server side(172.16.6.178,4003) thread pool is exhausted, detail msg:Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-172.16.6.178:4003, Pool Size: 200 (active: 200, core: 200, max: 200, largest: 200), Task: 6654 (completed: 6454), Executor status:(isShutdown:false, isTerminated:false, isTerminating:false), in dubbo://172.16.6.178:4003!
at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:74)
at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:78)
at *****cat.filter.ConsumerFilter.invoke(ConsumerFilter.java:55)
at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61)
at org.apache.dubbo.monitor.support.MonitorFilter.invoke$original$Gnq7aQ6X(MonitorFilter.java:91)
at org.apache.dubbo.monitor.support.MonitorFilter.invoke$original$Gnq7aQ6X$accessor$cd0tfALf(MonitorFilter.java)
at org.apache.dubbo.monitor.support.MonitorFilter$auxiliary$XZxwxCmN.call(Unknown Source)
at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:93)
at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java)
at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61)
at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:52)
at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61)
at org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:69)
at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61)
at org.apache.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56)
at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:79)
at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:265)
at org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor.intercept(ClusterInterceptor.java:47)
at org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$InterceptorInvokerNode.invoke(AbstractCluster.java:92)
at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:98)
at org.apache.dubbo.registry.client.migration.MigrationInvoker.invoke(MigrationInvoker.java:170)
at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:96)
at org.apache.dubbo.common.bytecode.proxy6.approveNotify(proxy6.java)
at ****.TempUserInfoServiceImpl.sendAsynFirmNotify(TempUserInfoServiceImpl.java:908)
at ****.impl.TempUserInfoServiceImpl.approveTempDoctorInfo(TempUserInfoServiceImpl.java:514)
at ****.impl.TempUserInfoServiceImpl$$FastClassBySpringCGLIB$$149c208c.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687)

at akka.actor.UntypedAbstractActor$$anonfun$receive$1.applyOrElse(AbstractActor.scala:332)
at akka.actor.Actor.aroundReceive(Actor.scala:537)
at akka.actor.Actor.aroundReceive$(Actor.scala:535)
at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:220)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:577)
at akka.actor.ActorCell.invoke(ActorCell.scala:547)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270)
at akka.dispatch.Mailbox.run(Mailbox.scala:231)
at akka.dispatch.Mailbox.exec(Mailbox.scala:243)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.util.concurrent.ExecutionException: org.apache.dubbo.remoting.RemotingException: Server side(172.16.6.178,4003) thread pool is exhausted, detail msg:Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-172.16.6.178:4003, Pool Size: 200 (active: 200, core: 200, max: 200, largest: 200), Task: 6654 (completed: 6454), Executor status:(isShutdown:false, isTerminated:false, isTerminating:false), in dubbo://172.16.6.178:4003!
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)

线程池如何设置,设置多少合适了?或者是因为dubbo方法本身耗时比较长,一直未释放线程连接导致线程池耗尽?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音短视频矩阵管理:就靠它,让运营更高效

在数字化时代&#xff0c;短视频已成为连接创作者与观众的重要桥梁。抖音作为全球领先的短视频平台&#xff0c;汇聚了海量的创作者和用户。然而&#xff0c;随着个人或品牌账号的增多&#xff0c;如何高效地管理这些抖音短视频矩阵&#xff0c;成为了一个亟待解决的问题。本文…

气膜游乐园:孩子们的新乐园—轻空间

随着科技的发展和人们对健康、安全娱乐环境的重视&#xff0c;气膜建筑逐渐成为游乐休闲项目中的新选择。作为这种创新建筑的一种应用形式&#xff0c;气膜游乐园正在越来越多地受到家庭和孩子们的欢迎。它不仅提供了一个安全、舒适的玩乐空间&#xff0c;还创造了丰富多样的活…

什么牌子的洗地机好用?推荐多款质量好洗地机的品牌

近些年大家对家庭生活环境的舒适和健康越来越重视&#xff0c;然而家务活的种类繁多&#xff0c;每次都要耗费大量的时间和精力&#xff0c;就拿擦地来说&#xff0c;每次都需要先扫地&#xff0c;再擦地&#xff0c;然后中间可能还要多次洗拖布等&#xff0c;十分繁琐。 因此…

数据分析:两组数据的T检验power评估

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 介绍 功效分析&#xff08;power analysis&#xff09;是在实验设计阶段进行的&#xff0c;用于确定在给定的效应量、显著性水平和样本大小下&#xff0c;实验能…

mysql进阶语法

mysql高阶语句 高级语法的查询语句 先创建库和表 排序语法&#xff0c;关键字排序 升序和降序 默认的排序方式就是降序 升&#xff1a;ASC 降序&#xff1a;DESC 配合&#xff1a;order by语法 降序排列&#xff1a;要指定列 select * from 数字 多个列升序 如果以…

三星电子推出性能更强、容量更大的升级版1TB microSD 存储卡

microSD 存储卡 PRO Plus 和 EVO Plus 采用三星先进的 V-NAND 技术&#xff0c;可安全可靠地捕捉和存储日常瞬间 性能提升后&#xff0c;顺序读取速度高达 180MB/s&#xff0c;传输速度达 160MB/s&#xff0c;可轻松处理较大文件 韩国首尔--2024年7月31日--三星电子宣布推出1…

中职软件测试实训室

在当今信息化高速发展的时代&#xff0c;软件作为信息技术的核心&#xff0c;其质量直接关系到用户的使用体验和企业的市场竞争力。因此&#xff0c;软件测试作为保障软件质量的重要环节&#xff0c;越来越受到业界的重视。为了满足社会对软件测试人才的需求&#xff0c;中职教…

springboot闲置图书分享boot--论文源码调试讲解

第2章 程序开发技术 2.1 Mysql数据库 开发的程序面向用户的只是程序的功能界面&#xff0c;让用户操作程序界面的各个功能&#xff0c;那么很多人就会问&#xff0c;用户使用程序功能生成的数据信息放在哪里的&#xff1f;这个就需要涉及到数据库的知识了&#xff0c;一般来说…

object的defineProperty与Proxy对比

Object.defineProperty 循环执行Object.defineProperty方法遍历对象的每一个属性&#xff0c;给每一个属性增加get和set方法&#xff0c;使得我们在读取和设置属性值的时候都会被Vue给监听到&#xff0c;从而去做一些其他的操作。 代码示例&#xff1a; let obj {a:1,b:2,c:…

善于运用facebook自动化规则,将节省你50%的时间

许多facebook广告投手都会花大量时间在盯盘看数据上&#xff0c;从而导致没有太多时间和精力去做广告素材的优化&#xff0c;其实常规的一些数据盯盘都可以交给facebook自动化规则&#xff0c;包括增减预算&#xff0c;暂停广告等&#xff0c;合理运用自动化规则&#xff0c;可…

前端必知必会-html表单元素

文章目录 HTML 表单元素HTML <form> 元素<input> 元素<label> 元素<select> 元素<option> 元素定义一个可选择的选项。<textarea> 元素<button> 元素<fieldset> 和 <legend> 元素<datalist> 元素<output> 元…

Aker ASA引领行业变革,旗下互联网投融资平台重磅起航

全球领先的海洋科技公司 Aker ASA 正式宣布,将于近期推出其全新的互联网海洋产业投融资平台。这一平台的推出标志着Aker ASA在海洋资源开发和投融资领域的又一重大进展,旨在为投资者提供创新、可靠的投资机会,同时推动海洋产业的可持续发展。 Aker ASA 作为行业内的领导者,以其…

开源AI智能名片O2O商城微信小程序在顾客价值链优化中的应用与探索

摘要&#xff1a;随着信息技术的飞速发展&#xff0c;顾客的消费行为模式正经历着前所未有的变革。在这一背景下&#xff0c;开源AI智能名片O2O商城微信小程序作为一种创新的营销与服务平台&#xff0c;正逐步成为企业连接顾客、优化顾客价值链的重要工具。本文旨在探讨开源AI智…

【IEEE出版】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024,9月20-22)

第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09;将于2024年09月20-22日在中国温州隆重举行。 会议主要围绕大数据、人工智能与软件工程等研究领域展开讨论。会议旨在为从事大数据、人工智能与软件工程研究的专家学者、工程技术人员、技术研发人…

Echarts 横向条形图的右侧标签靠右显示对齐,不被遮挡

解决方案&#xff1a; 再添加一个y轴&#xff0c;隐藏刻度线即可。 配置如下&#xff1a; 在这里插入代码片yAxis: [{type: category,axisLine: {lineStyle: {color: #EFEFEF, // 轴线颜色width: 1, // 轴线线宽type: solid // 轴线线条类型&#xff0c;可选为 solid、dashed…

<数据集>遥感航拍船舶识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;17575张 标注数量(xml文件个数)&#xff1a;17575 标注数量(txt文件个数)&#xff1a;17575 标注类别数&#xff1a;1 标注类别名称&#xff1a;[ship] 使用标注工具&#xff1a;labelImg 标注规则&#xff1a;对…

Python文献调研(四)QtDesigner的布局

一、新建项目&#xff1a; 1.打开pycharm&#xff0c;新建一个Python项目 &#xff08;1&#xff09;右键项目列表区&#xff0c;找到我们之前配置好的外部工具&#xff0c;点击Pyside6 QtDesigner 打开Qt Designer后会是这个界面&#xff1a; &#xff08;2&#xff09;此时…

XC8403B 30V降压芯片 耐压可达38V 适用24V降压 12V降压电路 3A大电流 替代RY8336

XC8403B是一款采用内部功率MOSFET的高频、同步、整流、降压、开关式转换器。XC8403 B提供不同频率和FB版本&#xff0c;可根据不同的应用进行选择。它提供了一种非常紧凑的解决方案&#xff0c;可以在很宽的输入电源范围内提供3A的连续输出电流&#xff0c;具有出色的负载和线路…

自动更换apk包名源码

系统通过对apk反编译&#xff0c;随机包名&#xff0c;随机签名&#xff0c;混淆代码等方式&#xff0c;回编译生成新的apk安装包通过系统智能自动处理&#xff0c;间隔5分钟&#xff08;可以自定义时间&#xff09;生成一个新包&#xff0c;通过对接对象云储存系统分发给不同的…

电力能源监控的未来技术趋势如何

电力能源监控的未来技术趋势是一个多元化且快速发展的领域&#xff0c;它涵盖了智能化、数字化、集成化以及可持续发展等多个方面。以下是对电力能源监控未来技术趋势的详细分析&#xff1a; 一、智能化与数字化 1、人工智能&#xff08;AI&#xff09;与机器学习&#xff1a…