InetAddress.getLocalHost() 执行非常慢

22 篇文章 0 订阅
13 篇文章 0 订阅

昨天同事反馈网关的请求非常慢,一个获取的token的接口响应都超过了30s,还好只是测试环境。

经过验证,几乎所有接口响应都很慢,很多都响应超时。

排查步骤:

0. 本地启动项目测试,没有这个问题。而且生产环境也没这个问题,推测是 环境问题,或择资源问题导致。

1. 通过arthas的trace命令来查找方法执行链路上的 哪里比较耗时。

但通过验证,调用方等待请求响应,花了70s,从arthas的日志来看,只花费了0.01ms。

因此推测,耗时是在进入目标方法只之前,都已经卡主了。

2. 由于拦截器比较多,就没有去分析哪个拦截去出了问题。其实也可以通过arthas 进行定位。

3. 通过jprofiler定位到了 阻塞的线程,然后看得了方法的调用堆栈信息。定位到了应该是InetAddress.getLocalHost()阻塞了,然后在通过 arthas的trace命令跟踪这个方法,确认了问题。

jprofiler截图

arthas截图

针对该问题的解决方法:

在本地/etc/hosts文件中 增加本机hostname的解析记录

127.0.0.1       localhost
127.0.1.1       DESKTOP-JAG3NND.localdomain     DESKTOP-JAG3NND

参考文档:

arthas帮助文档:trace | arthas

知乎网友的同样问题:InetAddress.getLocalHost() 执行很慢? - 知乎

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IccBoY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值