dubbo的超时时间设置

2 篇文章 0 订阅
2 篇文章 0 订阅

背景:

该问题源于我的一位同事调用dubbo方法时,在项目组群里咨询我。他调用的方法抛出了超时异常,更为诡异的是过一会(几秒钟),又再次收到了dubbo接口返回值。

 

问题探寻步骤:

核实下该方法消费者设置的类级别的timeout配置,然后核实了该方法生产者设置的类级别timeout配置。发现消费者设置的超时时间比较短。

 

dubbo的spring配置建议:

生产者与消费者区分开:spring-dubbo-producer.xml、spring-dubbo-consumer.xml各自有各自的配置

生产者配置:全面一些,消费者不要设置超时时间,这样消费者会默认采用生产者配置。因为生产者及业务实现更贴近实际。

                      超时时间配置:全局超时时间应该略大于接口级别最长耗时时间,每个接口级别的超时时间略大于方法级别最长超时时间,每个方法级别超时时间略大于实际方法耗时时间。

超时时间优先级:方法级别最高,其次接口级别,再次全局级别。消费者优先级大于生产者级别。

 

dubbo超时机制的由来:

dubbo底层是netty网络组件,NIO模式。消费端发起远程请求后,线程不会阻塞等待服务器的返回,而是马上返回一个reponseFuture,消费端不断轮询判断结果是否返回。

轮询时为避免死循环,引入的超时机制。

换句话说,假如消费者设置了超时时间,那么时间到了,消费端超时,但是服务端仍旧在执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值