关于linux环境运行jar包卡顿的问题
起因
运维兄弟发现几台虚机宿主机计算能力太差,进行了数据迁移。导致部署在这批主机上的组件和程序全部停掉了。
发现问题
由于程序没有自动化部署,作为苦逼的我只能上到主机上重新部署程序。发现运行jar -jar 命令发现命令行没有日志打印输出。
排查思路
- 排查涉及组件是否启动失败,导致程序连接超时无打印。检查后发现不是这个原因
- 怀疑是迁移过程中,jar损坏,于是重新打包一个新的jar包,运行还是一样
- 怀疑是不是资源不够: 检查内存,存储等资源。
df -h #查看磁盘存储情况
free -m #看出内存情况
top # 查看主机的资源情况,相当于Windows下的资源管理器
排除以上问题之后,发现依然如此。于是我开始百度看看有没有与我相似情况的问题参考。可想而知没有提供到任何思路。
无计可施了:问问同事老哥看看
找到问题原因
同事老哥简单了解问题情况后,就打开了 /etc/resolv.conf 文件。将所有的nameserver注释掉。后运行jar包,确实可以正常启动。原来他们之前项目组也遇到过这个问题。所以第一时间就想到排查这个文件。 这个文件是DNS配置文件。程序运行时会去跑这些域名解析。然后因为虚拟机迁移,导致域名访问不通,程序就一个个跑这些域名解析,导致程序运行和日志输出极慢。
关于 /etc/resolv.conf 文件
/etc/resolv.conf是DNS客户机的配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件