dubbo项目发布时Destroyed异常分析

文章讨论了在发布项目时elk出现的关于Dubbo服务被DESTROYED的异常日志,源于XXLJob定时任务调用业务时,由于服务发布导致的Dubbo消费者检查销毁状态的错误。解决在于XXLJob任务耗时和Dubbo服务重启的配合问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、问题现象

在发布项目时,elk有打印use dubbo version 2.6.2 is DESTROYED, can not be invoked any more!相关的报错日志,来提示dubbo消费者调用生产者时,生产者服务已经DESTROYED。

在这里插入图片描述

ChatGpt可知:

在这里插入图片描述

2、问题溯源

com.alibaba.dubbo.rpc.protocol.AbstractInvoker#invoke

在这里插入图片描述

在这里插入图片描述

源码可知,消费者调用dubbo时,调用invoke(),其会判断当前消费者的标记位是否被销毁状态,如果是就抛出以上异常,否则继续执行调用逻辑。

那消费者有哪些场景会处于销毁状态呢?

  1. 手动调用destroy()
  2. 生产者正在停止中
  3. 生产者启动中,但未初始化完成时
  4. 重复创建对象,会先销毁原来对象

结合发布场景每次服务发布的时候才产生异常,所以先考虑2/3的情况;

3、场景分析

针对异常日志:

在这里插入图片描述

溯源找到对应的业务代码,发现时xxljob定时任务的调用业务,

在这里插入图片描述

跑完大概5分钟左右


4、小结

那以上可知就是xxljob定时任务调用处理需要一些时间,但是提供服务的dubbo在发布时重启了,导致xxljob里存在的while(true)/for循环,调用dubbo服务时检查标志位报错,所以出现了异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿昌喜欢吃黄桃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值