Inet4AddressImpl.getHostByAddr 慢

简介: Inet4AddressImpl.getHostByAddr 慢

问题


我们的服务都通过gateway进行转发,最近发现接口会出现规律的变慢情况,正常情况下,一个响应时间200ms以内的接口,在多次请求的情况下,会出现响应时间增加到5秒,甚至5秒以上的情况。


如图



排查


我们首先排查了实际提供接口调用的服务,发现接口响应时间都很正常,基本都在100ms以内。


所以应该是链路上出现了耗时比较长的地方,因为我们的服务都是阿里云上的,所以运维帮忙在gateway上配置了arms,配置完成后,通过监控查找到了这里:



找到使用这个的这部分代码看一下:


        log.info("url:{}{}", serverHttpRequest.getRemoteAddress().getHostName(), serverHttpRequest.getPath());


是打印日志的语句,暂且先把这个地方注释掉了,问题果然消失。


分析


也就是说:


java.net.InetAddress.getHostName()


导致了堵塞我查了一下,说是反向DNS查询导致。当一个InetAddress创建时包含了域名信息,getHostName()方法会直接返回这个域名,否则会触发反向DNS解析,当配置的DNS服务器与目标InetAddress之前网络状况不佳就会产生延时。


具体的可以看这篇文章的解析:


使用InetAddress类的getHostName方法

相关文章
|
XML 数据可视化 安全
一文了解Activiti7
一文了解Activiti7
619 0
|
存储 Cloud Native API
oss云网关配置
配置阿里云OSS与云网关实现灵活数据传输和访问控制。步骤包括开通OSS服务,创建Bucket,获取访问凭证,可选配置CORS和生命周期规则。云网关配置涉及阿里云云原生网关的代理规则设定或使用云存储网关集成OSS访问,具体配置需参照产品文档,因产品更新可能会有变动。
447 1
|
Java 安全
一文读懂Java泛型中的通配符 ?
之前不太明白泛型中通配符"?"的含义,直到我在网上发现了Jakob Jenkov的一篇文章,觉得很不错,所以翻译过来,大家也可以点击文末左下角的阅读原文看英文版的原文。 下面是我的译文: Java泛型中的通配符机制的目的是:让一个持有特定类型(比如A类型)的集合能够强制转换为持有A的子类或父类型的集合,这篇文章将解释这个是如何做的。
14537 2
|
8月前
|
SQL 数据采集 监控
VeryReport:高效智能的报表软件,助力企业数据可视化决策
VeryReport:高效智能的报表软件,助力企业数据可视化决策
|
9月前
|
监控 前端开发 Java
构建高效Java后端与前端交互的定时任务调度系统
通过以上步骤,我们构建了一个高效的Java后端与前端交互的定时任务调度系统。该系统使用Spring Boot作为后端框架,Quartz作为任务调度器,并通过前端界面实现用户交互。此系统可以应用于各种需要定时任务调度的业务场景,如数据同步、报告生成和系统监控等。
364 9
|
JSON 关系型数据库 MySQL
理解和利用MySQL中的JSON功能
理解和利用MySQL中的JSON功能
546 2
|
存储 弹性计算 数据处理
阿里云对象存储OSS怎么收费?包年包月和按量付费价格表
阿里云对象存储OSS提供灵活的计费方案,包括存储费、流量费和请求费等。用户可选择按量付费或包年包月模式。标准型存储按量付费为0.09元/GB/月,包年包月则有多种套餐选择,如9元/年40GB和99元/年100GB。OSS流量费仅针对公网出方向,并区分闲忙时段。此外还提供流量包服务。更多详情及特殊需求费用(如数据处理、传输加速等)