最近在内网环境部署springboot
项目的时候,发现启动需要3分钟
以上,服务器也不是什么弱鸡服务器,并且CPU
以及内存
还有富余;很奇怪。
怀疑docker
最开始的时候,使用的是docker
部署,以为是docker
版本问题,但是实际上在其他服务器也是使用docker
部署,并没有遇到这种情况;但是由于没有头绪,就开始尝试升级docker
。
先查看系统版本:
1 | $ cat /etc/centos-release |
然后下载对应版本的系统,进行最小化安装, 然后使用yum install --downloadonly --downloaddir=<directory> <package>
命令,将docker-ce
的安装包离线下载,然后传入到内网,进行更新。
然而,并没有什么用,还是启动时间过长。
怀疑基础服务:nacos
、redis
、mysql
发现升级没有用处之后,将怀疑对象转移到基础服务上,查看了对应的日志之后,发现服务没有什么问题,倒是nacos
的客户端debug
日志信息输出了:无法将缓存写入。
遂将增加目录权限,但,一样没有什么用处。
怀疑系统问题
在经过一些排查之后,没有什么收获,甚至产生了重装系统的念头,但是由于服务器并不在边上,且上面的数据还是需要的,备份也是个问题,再加上对重装系统后能够修复并没有百分百的把握,所以暂时放弃了。
问题定位 DNS
在完全没有头绪的时候,脑海出现了排查时候看到的部分一直,无法找到 某某某
服务,那么有没有可能是dns
的服务有问题呢?
1 | ping kekxv.com |
结果发现,执行命令到输出结果,居然超过1
分钟,非常的不正常,而且这个现象似乎符合springboot
的启动慢的情况;检查一下DNS
:
1 | $ cat /etc/resolv.conf |
居然使用了谷歌的dns,然而我们的内网环境根本没有这个路由,所以DNS等到超时了,才进行结果反馈。
于是决定改为127.0.0.1测试看看:
1 | nameserver 127.0.0.1 |
再次进行 ping kekxv.com
,果然,这次很快就提示未知的服务.
那么重启一下springboot
服务测试看看。启动时间从原来的4分钟,降低到了10秒左右,很快啊。
后续
在使用docker的情况下,是可以指定dns服务器的,如果内网没有dns服务器,建议直接使用127.0.0.1,如果有内网的dns服务器的话,一定要记得设置为正确的服务器地址。
完。