Java - InetAddress.getLocalHost().getHostAddress() 踩过的坑!谨记 谨记
话不多说,先看代码:
... ...
LOGGER.DEBUG("-------- before srcIp to LOG--------");
InetAddress.getLocalHost().getHostAddress();//获取本机IP
LOGGER.DEBUG("-------- after srcIp to LOG--------");
... ...
本来平时一般也就是这样做的嘛,没啥问题啊;
结果,上周有同事去TW现场去不是这套代码的时候,发现这段代码执行特别慢,日志如下:
2019-01-24 16:28:01.115 [http-nio-11007-exec-10] DEBUG c.xxx.adapter.downlink.DownlinkServiceImpl - -------- before srcIp to LOG--------
2019-01-24 16:28:57.158 [http-nio-11007-exec-10] DEBUG c.xxx.adapter.downlink.DownlinkServiceImpl - -------- after srcIp to LOG--------
问题定位出来,发现在这个 InetAddress.getLocalHost().getHostAddress()地方。足足花费了一分钟的时间,什么鬼,在我们自己服务器上都是几毫秒就执行完了的呀!
有网友说:
执行慢的原因估计是DNS的问题,因为以前没有这问题,最近时好时坏,有时根本没问题,而最近因有的域名无法访问,添加了其它DNS后可以访问了,但DNS变了后解析本机地址也变慢了
我个人认为:
客户方部署这套代码是在K8S环境下的,k8s的网络本来就十分复杂,很有可能因为复杂的网络在DNS解析下变的更加缓慢而造成的。后来就果断的将这个获取本机ip的代码,换成获取配置文件中的配置ip来替代,从而避免了这个性能问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南