0%

关于内网springboot启动慢记录

最近在内网环境部署springboot项目的时候,发现启动需要3分钟以上,服务器也不是什么弱鸡服务器,并且CPU以及内存还有富余;很奇怪。

怀疑docker

最开始的时候,使用的是docker部署,以为是docker版本问题,但是实际上在其他服务器也是使用docker
部署,并没有遇到这种情况;但是由于没有头绪,就开始尝试升级docker

先查看系统版本:

1
2
$ cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core)

然后下载对应版本的系统,进行最小化安装, 然后使用yum install --downloadonly --downloaddir=<directory> <package>
命令,将docker-ce的安装包离线下载,然后传入到内网,进行更新。

然而,并没有什么用,还是启动时间过长。

怀疑基础服务:nacosredismysql

发现升级没有用处之后,将怀疑对象转移到基础服务上,查看了对应的日志之后,发现服务没有什么问题,倒是nacos的客户端debug
日志信息输出了:无法将缓存写入。

遂将增加目录权限,但,一样没有什么用处。

怀疑系统问题

在经过一些排查之后,没有什么收获,甚至产生了重装系统的念头,但是由于服务器并不在边上,且上面的数据还是需要的,备份也是个问题,再加上对重装系统后能够修复并没有百分百的把握,所以暂时放弃了。

问题定位 DNS

在完全没有头绪的时候,脑海出现了排查时候看到的部分一直,无法找到 某某某 服务,那么有没有可能是dns的服务有问题呢?

1
ping kekxv.com

结果发现,执行命令到输出结果,居然超过1分钟,非常的不正常,而且这个现象似乎符合springboot的启动慢的情况;检查一下DNS

1
2
3
$ cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114

居然使用了谷歌的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服务器的话,一定要记得设置为正确的服务器地址。

完。