惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
云风的 BLOG
云风的 BLOG
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
Engineering at Meta
Engineering at Meta
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
罗磊的独立博客
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX

博客园 - 三国梦回

oracle中date类型在mybatis中查询时遇到的坑 mitmweb在linux上进行反向代理及浏览器中实时查看请求响应 codex对接智谱coding plan,我发现连cc switch也不用了 windows codex更新失败如何处理 windos上codex沙盒报错问题记录 廉颇老矣,装个EclipseMemoryAnalyzer都能卡一小时 codex windows平台中elevated sandbox机制学习 codex windows平台中unelevated sandbox机制学习 windows安装codex desktop和cc-switch,接deepseek v4 flash windows安装ddns-go,上传动态的ipv6到自己的域名 immortalWrt路由器上抓包查看电脑联网如何获取ip 路由器刚刷的immortalWrt系统,我是如何配置ipv6的 路由器刷openwrt之ImmortalWrt过程记录--上 spring boot 项目中oracle datasource设置schema spring cloud项目中,在bootstrap.yml中指定了active的profile,结果不生效 线上服务重启后,从nacos取不到配置了,怎么回事 nginx location没学好,把自己坑了一把 技术问题记录20260125 最近遇到的两个技术问题记录 linux服务器文件上传失败 线上遇到的redis和数据库数据未同步问题、redisson内部实现问题 复杂业务系统线上问题排查过程 nacos中配了一个数字,springboot取回来怎么变了 一个java空指针异常的解决过程 简单记录下最近2个月完成的线上系统迁移工作 centos停服,迁移centos7.3系统到新搭建的openEuler 端口telnet不通排查过程 https证书中的subject alternative name字段作用及如何生成含该字段的证书 linux中如何判断一个rpm是手动安装还是通过yum安装的 对接服务升级后仅支持tls1.2,jdk1.7默认使用tls1.0,导致调用失败
bug排查:nacos做配置管理,给服务返回的配置竟然是错的
三国梦回 · 2026-08-18 · via 博客园 - 三国梦回

背景

大家好,我是逐日,今天分享一个最近才遇到的小问题。前几天,测试在测一个功能时,感觉怎么都不符合预期,我也看了,感觉nacos里面配置也是对的,程序好像也没bug,但程序表现出来的行为就是很奇怪。

今天排查了下,记录下处理过程。

步骤

常规检查

服务是spring boot服务,先检查了下jar包版本,正常。检查了下bootstrap.yml中配置的nacos服务器地址也是对的,从nacos取配置的功能也是开了的。

然后从nacos管理控制台看到的配置也是对的。比如配置如下

app:
  mockCurrentDate: 20260420

但是接口跑出来的逻辑感觉总是不对。

当时还在本地debug了一遍,也没发现有这个问题。

后面就想着看看,到底服务到底从nacos中取到的配置是啥。

查看服务拉取的nacos配置

于是直接在服务器上开了下抓包(服务所在服务器上和nacos之间的包,通过端口8848和9848来识别这部分流量)

tcpdump -i any tcp port 8848 or tcp prt 9848 -w 9848-35.pcap

wireshark分析了下,发现拉取的配置真有问题,如下图,这个日期是20260715,和我在nacos的管理页面看到的不一样。

image-20260818211605174

nacos数据库

然后就想着要不看看nacos集群(3台机器)连的数据库中的配置是啥吧(我们这个nacos中的配置是持久化到数据库的)。

ssh到nacos的其中一台机器后,ps找了下nacos进程,找到路径,找到配置文件:

[root@COMPASS-NACOS-3 conf]# pwd
/usr/local/nacos/conf
[root@COMPASS-NACOS-3 conf]# ll
total 108
-rw-r--r-- 1 root root  1250 May 22  2023 1.4.0-ipv6_support-update.sql
-rw-r--r-- 1 root root   127 May 22  2023 announcement.conf
-rw-r--r-- 1 root root 11662 Aug  6  2024 application.properties
-rw-r--r-- 1 root root 10917 Apr 25  2023 application.properties.bak
-rw-r--r-- 1 root root  9669 May 22  2023 application.properties.example
-rw-r--r-- 1 root root    82 Aug 11 14:16 cluster.conf
-rw-r--r-- 1 root root   691 May 22  2023 cluster.conf.example
-rw-r--r-- 1 root root  9169 May 22  2023 derby-schema.sql
-rw-r--r-- 1 root root 11046 May 22  2023 mysql-schema.sql
-rw-r--r-- 1 root root 31934 May 22  2023 nacos-logback.xml

从application.properties中找到了连的数据库:
db.url.0=jdbc:postgresql://1.1.1.1:5432/nacos?currentSchema=nacos_cfg
db.user=postgre
db.password=1111111

登到数据库看了下,就几个表,找了下对应的配置,发现数据库中的配置是对的。

三台机器是否都有问题

从这个步骤开始,就是在ai的指导下了,nacos3台机器之间的同步机制我也没学过,ai的建议是说先检查下nacos日志,是不是互相有同步失败。

grep -i "distro\|snapshot\|config.*notify\" /usr/local/nacos/logs/nacos.log | tail -100

这个确实看到有一些失败,不过看不太懂。

然后ai建议说先分别用curl调用每台机器上的nacos api来获取配置,来检查是不是三台都有问题,还是只有部分机器有问题。

先是登录获取一个token:

curl -X POST "http://127.0.0.1:8848/nacos/v1/auth/login" -d "username=1111&password=11111111"

上述接口会返回一个accessToken。

然后再用token去调用api获取配置:

 curl -s "http://三台机器的ip:8848/nacos/v1/cs/configs?dataId=xxxxx-ops-client-api-test.yaml&group=DEFAULT_GROUP&tenant=fadd2513-8f2a-41d3-9e97-4e4df5932683&accessToken=上述获取的token" 

返回示例如下(这图是现截的,当时反正看到的配置就是有问题的):

image-20260818214024218

三台机器我都分别试了下,结果都有问题。

检查服务器上的有问题的配置文件

我把上述结论继续告诉ai,然后ai告诉我,可以看看服务器上的配置文件,在此之前,我不知道服务器上还存了配置文件的(我以为只在数据库里存了呢)。

cd /usr/local/nacos/data/tenant-config-data/fadd2513-8f2a-41d3-9e97-4e4df5932683/DEFAULT_GROUP
中间的fadd2513-8f2a-41d3-9e97-4e4df5932683就是你配置所在的namespace的值。

image-20260818214426777

然后看了下这里配置,发现果然是有问题的。

备份并删除问题配置

ai的意思是,把这些有问题的配置备份下,然后删除,然后重启服务,保证都从数据库获取最新配置,看起来还是个缓存和数据库不一致的问题。。

备份删除:
mv /usr/local/nacos/data/tenant-config-data /usr/local/nacos/data/tenant-config-data.bak.$(date +%Y%m%d%H%M%S)
重启nacos服务:
/usr/local/nacos/bin/shutdown.sh
/usr/local/nacos/bin/startup.sh

重启后,果然即恢复正常。

结论

这个问题还是第一次遇到。ai最终没找出来到底为啥服务器上缓存的文件为啥是错的,只是指导我把有问题的配置删除并重启了服务,不过也已经很6了。