文章插图
对应的源码可以参考https://codebrowser.dev/glibc/glibc/sysdeps/unix/sysv/linux/ifaddrs.c.html 。
总结本文以 Java 中获取主机名慢的场景为契机 , 使用多种技术手段研究背后的原理,包括使用 Wireshark 抓包 , 使用 Arthas 工具定位到性能瓶颈,再转到 jdk 中查看对应的 native 方法实现,由于没找到最底层调用链路源码,转而参照标准Linux的相关源码 , 简单复现了上述场景 。
进一步地,由于没找到最底层调用链路源码,我们根据现象猜测的本地缓存、重试、超时等机制没有得到验证,有兴趣的同学可以进一步研究探索 。
参考文章
如何查找 jdk 中的 native 实现【InetAddress.getLocalHost 执行很慢?】
从Chrome源码看DNS解析过程
getaddrinfo工作原理分析
浅谈getaddrinfo函数的超时处理机制
推荐阅读
- 如何通过执行SQL为低代码项目提速?
- 手机上网很慢怎么处理(怎么样解决手机上网太慢)
- 跳转控制语句break
- 报时机器人的rasa shell执行流程分析
- 工厂想采购一套信息化生产执行系统mes,不知道用哪家比较好?
- 通过Thread Pool Executor类解析线程池执行任务的核心流程
- 无履行能力的法院会强制执行吗 强制执行无能力履行会判刑吗?
- 民间借贷胜诉后怎么申请强制执行 民间借贷胜诉后多久申请强制执行
- 掀式排烟口执行器怎么接线
- 执行预约定价安排是什么意思 预约定价安排是什么意思