Dubbo
从 Dubbo Connection …
应用日志不断出现 Dubbo RemotingException,最深层异常是 Connection refused。堆栈很长,前面还夹杂业务接口、代理类和重试线程,很容易让人先去检查调用参数或客户端代码。
但 Connection refused 的含义非常具体:目标地址可以路由到,TCP 连接却被立即拒绝。通常是目标端口没有进程监听,或容器刚好停止。它与请求超时、DNS 失败和业务异常不是同一类问题。
沿最深层异常向外验证
排查顺序从网络事实开始:
- 消费端最终尝试连接哪个 host 和 port;
- 对应端口是否存在监听;
- 服务容器是否正在运行、重启或已经退出;
- 注册中心是否还保留着失效 …
本地 WMS 看似误连生产:拆解 …
一个本地 WMS 实例的 JDBC 配置明确指向测试数据库,但登录用户、权限和部分页面行为却像来自另一套环境。单看配置文件,很容易得出“应用偷偷连错数据库”的结论。
排查后发现,同一个 Web 应用同时依赖多种数据来源;这些来源指向不同环境,造成了看似数据库串线的现象:
- 业务数据通过 JDBC 访问数据库;
- 登录、用户和权限通过远程 UPM 服务取得;
- Dubbo 服务地址由注册中心或缓存决定;
- Redis 保存会话、权限或服务发现相关缓存;
- 本机还可能同时运行多个 Tomcat,每个实例加载不同的配置目录。
因此,业务列表来自测试库,并不代表权限也来自测试环境。