nacos Connection refused (Connection refused)
记录一次“异常bug”,具体信息如下。主要是记录一下处理过程,可能口水话比较多,如果想看结果,直接往后拉即可。

最后一行

起初,运维同事找到我,跟我说程序出问题了,系统升级,一直连不上nacos。
我看了日志信息之后,刚开始还是没有在意的。毕竟是nacos报错,报错还那么明显:java.net.ConnectException: Connection refused (Connection refused)
我信心满满告诉他,是nacos没起起来,或者是配置文件有问题。这不是代码的问题。(这里带有一点点侥幸心理)



我很快就被打脸了。其他服务都能起起来,唯独我们同事写的这个模块出了bug?就是连不上nacos。此时让他们重启nacos,肯定是不现实的,毕竟nacos是没问题的。重启这个报错的模块也试过了,但是模块就是一直在重连nacos,并且最终连不上去。

于是我把nacos的加载顺序重新捋一遍。在docker中起服务,首先是加载docker的环境变量,然后替代掉程序中的bootstrap.yml。这里猜测是启动命令的问题。
配置的读取过程
1.当docker容器启动时,获取到容器的环境变量(通常是服务名,nacos地址,nacos命名空间,nacos组,需要的配置文件)。
2.jar启动时,会使用容器的环境变量会作为相关参数。(原理可以查询关键词: spring jar 参数)
3.springboot启动时会注入相关的参数,从而获取到nacos的配置信息,并将nacos做为配置中心,从nacos上读取相关配置。
4.springboot 读到相关配置,其中一个配置是将nacos做为注册中心,将服务注册到nacos上。 (本次异常的发生点)

于是我有去问运维同事容器的启动命令。(因为docker中的环境变量,已经在启动命令中做了映射了,所有我们只用看运维同事的启动命令即可)
exec java -jar island-serviceconfig.jar --server-addr=sc-nacos:8848 --namespace=public --group=service-cool --config-common=island-common.yaml --config-service=island-serviceconfig.yaml
看着启动命令,我又陷入了沉思,这是怎么操作,一定毛病也没有。就这样,尝试了好几遍。一个下午就没有了。

后面我仔细回味报错信息。这不可能,nacos难道有版本错误?很快被我否定,这次升级系统,重新拉了代码。之前都是好好的,运维那边的nacos版本是没有改动过的。
于是我上去仓库看代码。代码也没有问题,近期没有人修改过。这很郁闷呐。
最后迫不得已,去看了nacos的源码,最后找到了一点点信息,nacos是在我们没有配置nacos地址的时候,才会去加载localhost:8848这个地址。
那么问题来了,明明我们配置了nacos地址,为什么还是会去加载localhost:8848?这又回到了原点。又开始怀疑是运维同事的执行命令出了问题,但是确实是没有问题的。
我慢慢静下心来。也许是我一开始的出发点就出问题了。我一直以为是运维同事部署出了问题,思维停留在运维那边,丝毫没有怀疑是配置问题的问题。
最终快下班了和另一个同事讨论,我刚开口描述完问题,他就说了一句:卧槽,我搞了三天。
果然,之前不是好着的,而是有这位同事一直在“擦屁股”,但是git上面的配置问题,他又没有进行更新。导致运维每次拉取代码,都会出现这个问题。具体问题如下

乍一看这配置没啥问题,我之前检查配置文件也是,每次看下去都没有问题,洽洽是我的以为,导致这个问题没能及时被发现。这就是一个缩进的问题。
正确的配置如下:

最后,感受一波吐槽,其实最初运维的同事也发现这个缩进有问题,所有他手动改了很多,也反馈了,但是估计开发都很忙,就没有修改git上的配置文件。导致埋下了一颗大雷。好在写代码的同事已经离职(手动狗头保命)




总结:遇到bug不要慌,好好和运维同事做沟通,每个部门都有自己的规范和要求,像简单的运行命令出了问题,这个还是很好排查的。切记切记,不要有甩锅心理,不要有甩锅心理,不要有甩锅心理。
这次很明显,运维同事就是被我们开发摆了一道,这也是开发这边没有注意的问题,或者说,这是不应该出现的问题,属于比较低等的问题。饶是如此,我们也要重视起来,否则一个小小的雷,埋久了,他也是会发酵的,威力越来越大。
nacos Connection refused (Connection refused)的更多相关文章
- supervisord supervisorctl 问题supervisor.sock refused connection
如果supervisord挂了的话,提示supervisor.sock refused connection. ,重新启动命令为supervisord 常用命令: supervisord -c /et ...
- 异常-CDH的service无法启动并抛出异常-org.apache.avro.AvroRemoteException: java.net.ConnectException: Connection refused (Connection refused)
1 详细异常 org.apache.avro.AvroRemoteException: java.net.ConnectException: Connection refused (Connectio ...
- exception is feign.RetryableException: Connection refused (Connection refused) executing GET http://......
2018-03-23 10:00:58.430 ERROR 31889 --- [nio-4321-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Se ...
- public class feign.RetryableException feign.RetryableException: Connection refused (Connection refused) executing POST http://common-wx/wx/auth/client/token/v1
一.异常出现的场景 Spring Cloud内部两个服务A和B,A调用B时,抛出该异常.提示连接拒绝 public class feign.RetryableException feign.Retry ...
- supervisorctl unix:///var/run/supervisor.sock refused connection
运行supervisorct 报如下错误 supervisorctl unix:///var/run/supervisor.sock refused connection 查看supervisord. ...
- Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused (Connection refused)
一.linux中配置redis,使用java连接测试时报错: Exception in thread "main" redis.clients.jedis.exceptions.J ...
- 启动storm之后浏览器访问报错,org.apache.thrift7.transport.TTransportException: java.net.ConnectException: Connection refused (Connection refused)
原因是zookeeper没有启动 Internal Server Error org.apache.thrift7.transport.TTransportException: java.net.Co ...
- Cannot open channel to 3 at election address :3888 java.net.ConnectException: Connection refused (Connection refused)
关于Linux中搭建分布式时可能遇到的问题 这个问题来自于今天安装zookeeper时踩的一个大坑,害的我花了一天时间.在搭建zookeeper的分布式时,往往要进行这样的配置: server.1=h ...
- solr集群Server refused connection at: http://127.0.0.1:6060/solr/ego 注册zookeepr自动使用内网ip
引导:适用于各种注册服务,zookeeper和被注册的服务器不在同一ip上,产生的注册了127.0.0.1本地ip地址 在使用solr集群操作的时候,报了如下的错误 org.apache.solr.c ...
随机推荐
- 开源电路分享のFalling Star Board
设计初衷 想自己做个能连网的时钟,结合RT-thread,显示个天气预报什么的,想想就挺有趣的.考虑到当前的芯片价格,和后续的设计,万一还有个啥奇妙的想法呢,就把这个做成了核心板. 一开始就只做了最小 ...
- 开发掉坑(二)前端静态资源 Uncaught SyntaxError: Unexpected token <
某天,有同学反馈后台管理系统出现静态资源无法加载的问题. 复现如下: 进入首页. 点击侧边栏某个子功能,静态资源可正常访问到. 等待10分钟左右,点击侧边栏其他子功能,无法访问到静态资源. 查看控制台 ...
- sql server数据库性能优化之2-避免使用CTE公用表达式的递归【by zhang502219048】
数据库优化中的一个实例,记录一下: 1. 原来用了CTE公用表达式的递归,reads高达约40万,看查询执行计划,使用了Nested Loops: 2. 优化去掉递归,改用其它方式实现,reads降低 ...
- 【floyd】8.29题解-path
path 题目描述 这次的任务很简单,给出了一张有N个点M条边的加权有向无环图,接下来有Q个询问,每个询问包括2个节点X和Y,要求算出从X到Y的一条路径,使得密度最小(密度的定义为,路径上边的权值和除 ...
- theUnforgiven——项目冲刺
这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class1-2018/ 小组号和队名 8组theUnforgiven ...
- 二、JavaSE语言基础之常量与变量
1.常量 所谓常量值的是数据处理过程中值不能更改的数据. 2.变量 所谓变量值的是运算过程中值可以改变的数据,类似于代数中的未知数. 在Java语言中,使用变量时必须遵循先定义,而后赋值, ...
- hdu 1116 敌兵布阵 线段树 区间求和 单点更新
线段树的基本知识可以先google一下,不是很难理解 线段树功能:update:单点增减 query:区间求和 #include <bits/stdc++.h> #define lson ...
- 阿里云ECS问题 Login Incorrect , all available gssapi merchanisms failed
1.阿里云ECS无法登录 Login Incorrect 阿里云ECS密码包含2个密码: 1.重置密码(实例密码也就是我们SSH远程连接的密码): 2.修改远程连接密码(在阿里云网页控制台上远程连接的 ...
- linux 中只显示目录的几种方法
ls 参数 -a 表示显示所有文件,包含隐藏文件-d 表示显示目录自身的属性,而不是目录中的内容-F 选项会在显示目录条目时,在目录后加一个/ ls -l total 8 drwxrwxr-x 2 r ...
- Docker进阶:容器卷、DockerFile、Docker网络原理
1.Docker镜像 1.1镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和机遇运行环境开发的软件. 包含一个软件的所有内容.蒋所有的应用和环境,直接打包为docker镜像,直 ...