排查一次nacos动态配置不生效

这篇具有很好参考价值的文章主要介绍了排查一次nacos动态配置不生效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、问题描述

新需求需要使用到nacos动态配置,但是开发完成之后联调过程中发现动态配置没有生效。

二、问题排查

  1. 首先在本地测试,发现启动服务后修改nacos配置确实不生效,在查看启动日志时发现服务启动时打印了下面这样的日志。这里是在配置nacos的监听,在A服务的启动日志中只看到了对dubbo的监听配置,没有看到对配置文件的监听, 因此怀疑是对配置文件的监听没有注册成功。
  2. 因为B也有动态配置,为了验证判断,在本地启动了B服务然后查看日志,发现启动时打印了下面的日志

排查一次nacos动态配置不生效

这段日志是注册对nacos配置文件的监听,因此可以确定是A服务启动时没有注册成功或没有注册对naocs配置文件的监听。

3. 通过查看nacos的代码,发现在NacosContextRefresher类中注册的监听,监听的dataId和group是从NacosPropertySourceRepository类中的NACOS_PROPERTY_SOURCE_REPOSITORY取的。此时怀疑可能是nacos配置错误导致监听注册失败。

4.开始第一次调试,发现NACOS_PROPERTY_SOURCE_REPOSITORY中包含了配置文件的dataId和group,不是之前怀疑的原因。此时怀疑是springboot的配置有问题或者代码的问题。

5.首先重新启动A服务,开始多次debug,发现在注册监听时会从AbstractApplicationEventMulticaster类中的成员变量defaultRetriever(ListenerRetriever类的对象)的applicationListeners属性中没有NacosContextRefresher,导致对nacos配置文件的监听没有注册成功。

6.此时对A重新debug,发现容器在注册监听之后才注册的NacosContextRefresher,此时判断对nacos配置文件的监听可能是在这之后。为了验证这种想法,debug了一次B的启动流程,发现spring确实是在服务启动之后注册的对nacos配置文件的监听,因此可以确定a在启动之后由于某些原因没有注册nacos配置文件的监听。

在下面一段代码的红框部分发布ApplicationReadyEvent事件,执行了这里,对nacos配置文件的监听才真正开启

排查一次nacos动态配置不生效

7.重新debug A服务,发现springboot的run()中有一行callRunners(context, applicationArguments); 这个方法内部代码如下,这里使用主线程执行实现ApplicationRunner和CommandLineRunner的类中的代码,如果这些类中有阻塞,spring就不会执行listeners.running(context);。排查一次nacos动态配置不生效

8.经过上面的分析和debug,可以确定问题出现在A代码的SQSListener类中,这个类实现了ApplicationRunner,同时这里有while(true)的代码,从而导致主线程阻塞在这里,而且在这个时候A已经启动成功,所以A仍然可以提供服务。文章来源地址https://www.toymoban.com/news/detail-409958.html

到了这里,关于排查一次nacos动态配置不生效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次Nacos线程数飙升排查

    近日有个项目用到了Nacos做注册中心。运行一段时间发现Nacos服务的线程数达到了1k+。这肯定是不正常的。 环境: 镜像nacos-server 2.2.3 docker-compose编排部署 Nacos standalone模式 问题表现 docker stats nacos 发现该容器的线程数1k+ 用Fastthread分析stack文件表现如下 数量最多的线程线程栈如

    2024年02月09日
    浏览(46)
  • Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)

    我们知道两台Linux服务器机器之间如果使用ssh命令登录或scp/rsync命令传输文件每一次都需要输入用户名相对应的密码,如果要免密码,则需要对两台Linux服务器机器之间进行SSH互信。 虽然这是废话,也希望大家了解一下。 SSH(Secure Shell)是一种安全的传输协议,它可以让Lin

    2024年02月09日
    浏览(62)
  • Nacos 小bug: application.properties配置未生效,导致端口未生效

    最近用了下nacos 1.4.6 ,发现windows 中修改配置中的启动端口未生效,其实就是配置文件没读取到。 去github 逛了一下issue ,参考这个:https://github.com/alibaba/nacos/issues/10217 这哥们儿是nacos 1.4.5 Linux系统下的相同问题,shell 中有个bug,改了就好 同理,Windows也一样,找到startup.cmd 文件的

    2024年02月07日
    浏览(53)
  • windows wsl2 vscode golang debug不生效问题排查

    golang vscode点击Run- Start Debugging后,看到正常的debug 调用dlv-dap,但是没有命中断点。 原因是我用的wsl2 remote, 默认代码保存在windows上,在wsl里看到的是/mnt/c/xxx的目录,为了在linux中方便使用建立了软连接。最后导致打断点时日志报找不到go文件。 排查思路: 1、在.vscode/launch.

    2024年02月03日
    浏览(66)
  • 一次服务启动慢问题排查

    随着时间推移,参与开发的人员越来越多,项目代码也会越来越复杂,需要我们有意识的定期对代码进行优化,有问题及时解决,避免技术债务越积越多。 这不本人就遇到一个服务启动慢的问题,印象中服务启动是比较快的,一般也就20几秒,但这次开发一个需求发现服务启

    2024年02月16日
    浏览(44)
  • 记录一次SpringBoot3+Nacos Config做配置中心时,No spring.config.import property has been defined的问题

    以下为报错信息: No spring.config.import property has been defined 启动时,控制台已经很明确的给出了一个标准的解决方案: Add a spring.config.import=nacos: property to your configuration. If configuration is not required add spring.config.import=optional:nacos: instead. To disable this check, set spring.cloud.nacos.config.import

    2024年02月11日
    浏览(76)
  • SpringCloud使用nacos做配置中心,不生效,没有作用

            一直使用nacos做注册中心,配置还是使用的配置文件。将配置文件整理到nacos以后,却发现一直不生效,看网上大部分说是版本依赖不兼容的问题,修改版本依赖关系、尝试降版本后发现都未生效。         新建bootstrap.yaml配置文件,将 Nacos本身的相关配置必须都

    2024年02月06日
    浏览(64)
  • Nginx 配置反向代理不生效(代理到nacos集群)

    环境:centos8 相信各位安装都不成问题,反向代理配置也都能安装网上资料配置完成,但问题就出在配置好后启动Nginx,访问默认端口能成功: 但是访问自己配置的反向代理就会失败(如以下这种情况等): 我所遇到的问题出处:在我自建的/usr/local/nginx文件夹下下载了nginx压

    2024年02月16日
    浏览(33)
  • 【记一次线上事故的排查思路】- CPU飙升问题排查

    由于项目排期较紧,临时从其他组调来三个开发资源帮我一起做项目,难免上线的时候大家的需求一块上线。 问题来了,上线三天后,线上CPU总是莫名奇妙的突然飙升,飙升后CPU并未降下来,而是一直处在高点。 由于是线上导致的问题,CPU超限后,会自动重启项目,未能保

    2024年01月23日
    浏览(52)
  • SpringBoot及Nacos配置中心加载顺序及覆盖生效关系

    目录 一、测试环境版本 二、测试结果 1、标准的SpringBoot应用 2、含有Nacos配置中心的SpringBoot应用 spring-boot-starter-parent  2.7.10 spring-cloud-starter-bootstrap  3.1.6 spring-cloud-starter-alibaba-nacos-config  2021.0.4.0 nacos-client 2.1.1 nacos服务端 2.2.1 1、标准的SpringBoot应用 在标准的SpringBoot应用中,

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包