Dubbo

从 Dubbo Connection …

应用日志不断出现 Dubbo RemotingException,最深层异常是 Connection refused。堆栈很长,前面还夹杂业务接口、代理类和重试线程,很容易让人先去检查调用参数或客户端代码。

但 Connection refused 的含义非常具体:目标地址可以路由到,TCP 连接却被立即拒绝。通常是目标端口没有进程监听,或容器刚好停止。它与请求超时、DNS 失败和业务异常不是同一类问题。

沿最深层异常向外验证

排查顺序从网络事实开始:

  1. 消费端最终尝试连接哪个 host 和 port;
  2. 对应端口是否存在监听;
  3. 服务容器是否正在运行、重启或已经退出;
  4. 注册中心是否还保留着失效 …

本地 WMS 看似误连生产:拆解 …

一个本地 WMS 实例的 JDBC 配置明确指向测试数据库,但登录用户、权限和部分页面行为却像来自另一套环境。单看配置文件,很容易得出“应用偷偷连错数据库”的结论。

排查后发现,同一个 Web 应用同时依赖多种数据来源;这些来源指向不同环境,造成了看似数据库串线的现象:

  • 业务数据通过 JDBC 访问数据库;
  • 登录、用户和权限通过远程 UPM 服务取得;
  • Dubbo 服务地址由注册中心或缓存决定;
  • Redis 保存会话、权限或服务发现相关缓存;
  • 本机还可能同时运行多个 Tomcat,每个实例加载不同的配置目录。

因此,业务列表来自测试库,并不代表权限也来自测试环境。

先确认真正处理请求的进程 …