博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux HostName改动引发的BUG
阅读量:6084 次
发布时间:2019-06-20

本文共 863 字,大约阅读时间需要 2 分钟。

hot3.png

Linux HostName引发的BUG

场景描述

11月份我们进行了一次全项目迁移,总共30多台机器,其中在迁移JAVA项目群的时候发现同样的SpringBoot Jar包在原生产启动很快,把配置文件改成新环境IP整个启动过程居然需要2~3分钟,具体表现为SpringBoot 启动图标等一小部分日志输出很快,然后就没有日志输出,大概隔40秒继续输出一部分,再过1分钟全部日志输出完成,启动完毕后 程序访问等一切正常。

问题分析及排查

首先查看日志输出是否正常,除了输出日志时卡顿一切都正常没有报错,程序启动完成后功能测试也一切正常,于是开始分析是否因为执行启动脚本后操作系统原因导致线程启动慢,也使用了同事推荐提示的strace命令观察调用链的耗时,后来结合日志输出的情况否定了操作系统原因导致,因为执行启动脚本后立马就有一部分日志输出,说明java进程已经启动,肯定是启动过程中需要等待其它资源,常见的是等待IO结束,但程序启动并无大量IO操作,排除了IO等待的原因,思考无果后便开始在程序停顿的时候使用Jstack命令查看java线程栈信息,结果如下图程序一直卡在getLocalHostName的Native Method:

于是开始对比新环境和旧环境的HostName,果然新环境被网管改成了非localhost(网管有时候为了规范会改动hostName),并且没有把hostname加入本机hosts。

结果及解决

经过上面的分析和排查得出结果:SpringBoot项目启动时会去获取本机名,如果改动过HostName且未把HostName配置到Hosts则会等待超时(60s)后返回,程序没有报错,并且后续如果用到了getLocalHostName得方法时也会超时,知道原因后把改过得Hostname配置到Hosts中127.0.0.1 HostName后及恢复

注:版权所有转载请注明出处,作者:Ambitor

转载于:https://my.oschina.net/ij5IYLKW/blog/2985878

你可能感兴趣的文章
eclipse创建多模块maven工程小结
查看>>
一些常用的c++系统函数
查看>>
Codeforces Round #296 (Div. 1) B. Clique Problem 贪心
查看>>
奇怪吸引子---LorenaMod2
查看>>
扩展Log4j支持JNDI数据源
查看>>
拉勾网董事长许单单:凡是让你痛苦的,都是让你成长的
查看>>
用java在客户端读取mongodb中的数据并发送至服务器
查看>>
html5 canvas围绕中心点旋转
查看>>
从零开始学android开发-项目打包发布
查看>>
精心收集整理的SQL Server 2014/2012/2008/2005/2000简体中文企业版下载地址
查看>>
Bootstrap <基础十八>面包屑导航(Breadcrumbs)
查看>>
lr_start_timer,lr_get_transaction_duration,lr_get_transaction_wasted_time函数使用总结
查看>>
ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS
查看>>
rdd.toDebugString
查看>>
MVC5 + EF6 入门完整教程
查看>>
Swing中弹出对话框的几种方式(转)
查看>>
biz处理dao事务处理层
查看>>
毕业论文 一定要自己写 切记不可抄袭
查看>>
洗纸牌算法
查看>>
MongoDB Shell 经常使用的操作
查看>>