温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java dubbo怎么排查故障

发布时间:2026-11-03 18:48:50 来源:亿速云 阅读:104 作者:小樊 栏目:编程语言

在 Java + Dubbo 的系统中,排查故障通常遵循 “分层定位” 的思路:网络 → 注册中心 → 服务状态 → 代码/配置 → 性能。下面给你一套比较实用的排查方法和工具。


一、先确认问题现象

先搞清楚是哪一类问题:

  • 服务 调不通(No provider / Timeout)
  • 服务 偶发超时
  • 服务 返回错误(业务异常 / 序列化失败)
  • 服务 性能差
  • 服务 频繁掉线

二、基础排查清单(最常见)

1. 看日志(最重要)

Dubbo 日志一般在:

  • 应用日志(业务日志)
  • dubbo.access.log(如开启)
  • 注册中心日志(ZK / Nacos)

重点关注:

  • No provider available
  • Timeout
  • Serialization error
  • Failed to invoke remote method

建议开启:

dubbo:
  application:
    logger: slf4j
  provider:
    accesslog: true

2. 检查服务是否注册成功

Zookeeper

zkCli.sh
ls /dubbo/com.xxx.Service/providers

Nacos

  • 控制台 → 服务管理 → 服务列表

常见问题:

  • 端口被占用
  • 网络不通
  • 注册中心地址配错

3. 检查 Consumer 是否订阅到 Provider

Consumer 端日志:

Register directory ... url=xxx

如果没有 URL,说明:

  • 注册中心没数据
  • 分组 / 版本不一致
  • 环境不对(dev / test / prod)

三、Dubbo 自带排查工具(强烈推荐)

1. telnet 命令(经典)

telnet 127.0.0.1 20880

常用命令:

ls
ls -l com.xxx.Service
invoke com.xxx.Service.method(args)
status

可验证:

  • 服务是否存活
  • 方法是否可调用
  • 参数是否正确

2. Dubbo Admin(图形化)

功能:

  • 服务查询
  • 调用统计
  • 动态配置
  • 权重 / 禁用

适合:

  • 线上快速看服务状态

3. Dubbo QoS(3.x 推荐)

dubbo:
  qos:
    enable: true
    port: 22222

命令:

nc 127.0.0.1 22222
> ls
> offline
> online

四、常见问题 & 对应排查点

1️⃣ No provider available

检查:

  • Provider 是否启动
  • 注册中心是否连通
  • version / group 是否一致
  • 网络策略(防火墙)

2️⃣ Timeout

排查顺序:

  1. Provider 是否 GC / 线程池满
  2. 数据库 / 下游接口慢
  3. 网络延迟
  4. 超时配置是否合理
dubbo:
  consumer:
    timeout: 3000
  provider:
    timeout: 5000

3️⃣ Serialization failed

常见原因:

  • 参数没实现 Serializable
  • 枚举 / 泛型问题
  • Dubbo 版本不一致

4️⃣ 服务频繁掉线

检查:

  • 心跳超时
  • 容器 OOM / 重启
  • 注册中心抖动

五、线程 & 性能问题排查

1. 线程池满

Provider 日志:

Thread pool is EXHAUSTED

解决:

  • 增大线程池
  • 优化慢接口
  • 限流
dubbo:
  provider:
    threads: 200

2. 用 Arthas 定位慢方法

trace com.xxx.ServiceImpl method

六、监控建议(长期)

  • Dubbo Monitor
  • Prometheus + Grafana
  • SkyWalking(链路追踪)

七、总结一句话

Dubbo 故障排查 = 日志 + 注册中心 + telnet/QoS + 网络 + 线程池

如果你愿意,可以告诉我:

  • Dubbo 版本(2.6 / 2.7 / 3.x)
  • 注册中心(ZK / Nacos)
  • 具体报错信息

我可以直接帮你定位。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手