记一次nacos+dubbo本地偶现连接不上开发环境

工作中遇到一个本地环境偶尔连接不上开发或测试环境的问题,在此记录下排查流程和导致出现该问题的原因。

1.问题描述

正常项目启动成功会出现JVM的启动耗时,如下图:

代表着项目已经启动成功。

这个时候nacos上服务注册有两台,78是我本地ip

此时dubbo元数据中心也是两个

但是异常的是偶尔出现dubbo元数据中心注册不上去的问题:

项目日志到连接nacos就戛然而止,一直未出现JVM启动时间的日志

再看nacos上注册情况

服务注册是正常注册

元数据中心确只有一台

然后通过网关访问也会一直超时无法访问到本地的服务,但直接postman调用本地可以进入。相当于注册中心没注册上去。

2.问题定位

因为日志只有短短一行差别(后面看了源码才知道,其实dubbo有打印日志,但是dubbo日志有点特殊,Dubbo启动日志丢失问题-优快云博客),所以问题比较难定位。

所以这里我用了很蠢的方法(不熟悉dubbo的源码的小白),从springboot启动的时候断点

发现是初始化容器时时间过长,然后通过debug pause找到了死循环的地方。

AbstractServiceDiscovery.getRemoteMetadata这个方法一直在循环调用,然后我在这里发现获取元数据时候,参数里面的ip竟然不是dev环境的ip,这个ip指向的是test环境。

看到这个ip我心里就有猜想了,会不会是dubbo的缓存问题。

于是我把dubbo的本地缓存全部清理了。

然后重新启动,发现还是出现了上面的问题。

没办法只好继续往上层排查,最终在NacosServiceDiscovery.getInstances里面发现namingService缓存获取的地址是nacos的缓存。

于是清理了nacos缓存后发现,项目启动成功。
那到底是什么原因导致启动dev配置,确使用了test的缓存呢?

原因是因为我们开发偷懒,dev环境和test环境namespace的id一模一样,然后nacos读取缓存,又是根据namespace的id来定位的,所以导致两个环境的缓存串了。

3.解决方案

修改两个环境namespace为不同id

### DubboNacos集成时Dubbo-Admin中元数据无法使用解决方案 当遇到DubboNacos集成过程中,Dubbo-Admin显示无元数据的情况时,可以采取以下措施来排查并解决问题。 #### 配置检查 确保`dubbo-admin`的配置文件中的注册中心地址正确指向了Nacos服务器,并且包含了必要的参数。例如: ```properties admin.registry.address=nacos://192.168.0.188:8848?group=dubbo&namespace=ac835974-259f-4669-a511-552521e8df0a admin.config-center=nacos://192.168.0.188:8848?group=dubbo admin.metadata-report.address=nacos://192.168.0.188:8848?group=dubbo&namespace=ac835974-259f-4669-a511-552521e8df0a ``` 这些设置指定了如何连接Nacos服务以及所属分组和命名空间[^2]。 #### 日志分析 如果上述配置均无误但仍存在元数据缺失象,则应查看`nacos.log`日志文件以获取更多线索。错误原因可能涉及网络连通性、IP或端口号匹配等问题。通过审查日志可以帮助定位具体问题所在[^4]。 #### 版本兼容性验证 考虑到同版本间的差异可能导致功能失效,在尝试其他方法之前先确认所使用的DubboNacosDubbo Admin三者之间的版本是否存在已知冲突或需要特定组合才能正常工作的情形[^3]。 #### 数据库连接测试 有时即使所有外部依赖项看起来都没有问题,内部存储机制也可能成为瓶颈之一。因此有必要单独检验数据库链接状态是否稳定可靠,因为这直接影响到了应用运行期间的数据持久化操作。 #### 测试环境搭建 为了进一步缩小潜在影响因素范围,建议在一个独立环境中重相同场景下的部署流程,从而排除本地开发机器上特有的干扰变量带来的确定性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值