【APIM】Azure APIM抛出 java.lang.RuntimeException 错误定位

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【APIM】Azure APIM抛出 java.lang.RuntimeException 错误定位

问题描述

Azure APIM服务日志中发现 java.lang.RuntimeException 错误,在进一步通过Application Insights采集的错误信息日志,发现真实的请求错误为:‘The remote name could not be resolved 'xxxx.xxx.xx'"。

 

问题解答

APIM服务,在没有配置自定义的DNS服务器时,默认会使用Azure平台的DNS服务器(168.63.129.16)进行解析。

Azure APIM服务所托管的虚拟机操作系统为Windows,在遇到多个DNS Server时的选择顺序如下:

The DNS Client service queries the DNS servers in the following order:
DNS 客户端服务按以下顺序查询 DNS 服务器:

  1. The DNS Client service sends the name query to the first DNS server on the preferred adapter’s list of DNS servers and waits one second for a response.
    DNS 客户端服务将名称查询发送到首选适配器的 DNS 服务器列表中的第一个 DNS 服务器,并等待一秒钟以获取响应。

  2. If the DNS Client service does not receive a response from the first DNS server within one second, it sends the name query to the first DNS servers on all adapters that are still under consideration and waits two seconds for a response.
    如果 DNS 客户端服务在一秒钟内未收到来自第一个 DNS 服务器的响应,则会将名称查询发送到仍在考虑中的所有适配器上的第一个 DNS 服务器,并等待两秒以获取响应。

  3. If the DNS Client service does not receive a response from any DNS server within two seconds, the DNS Client service sends the query to all DNS servers on all adapters that are still under consideration and waits another two seconds for a response.
    如果 DNS 客户端服务在两秒内未收到任何 DNS 服务器的响应,则 DNS 客户端服务会将查询发送到仍在考虑的所有适配器上的所有 DNS 服务器,并再等待两秒以获得响应。

  4. If the DNS Client service still does not receive a response from any DNS server, it sends the name query to all DNS servers on all adapters that are still under consideration and waits four seconds for a response.
    如果 DNS 客户端服务仍未收到任何 DNS 服务器的响应,它将名称查询发送到仍在考虑中的所有适配器上的所有 DNS 服务器,并等待四秒钟以获取响应。

  5. If it the DNS Client service does not receive a response from any DNS server, the DNS client sends the query to all DNS servers on all adapters that are still under consideration and waits eight seconds for a response.
    如果 DNS 客户端服务未收到来自任何 DNS 服务器的响应,则 DNS 客户端会将查询发送到仍在考虑的所有适配器上的所有 DNS 服务器,并等待 8 秒以获得响应。

引用文档:https://learn.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd197552(v=ws.10)?redirectedfrom=MSDN

因为错误消息“The remote name could not be resolved ”已经非常明确的指出了是域名无法解析的错误,所以排查思路是:

  • 如果配置了自定义DNS服务器,可以在DNS服务器中查看日志,检查是否有未能解析的错误。
  • 如果没有配置,则需要检查Azure DNS服务器日志。如果在Azure DNS服务器的解析日志中发现 RCODE 为 NXDOMAIN(3) 的错误码,说明Azure DNS服务器上并未找到所查找目的域名相关A记录

  • 此外,如果配置有多个DNS服务器,会存在 第一个DNS Server没有响应时, 会向其他DNS Server发送解析请求,并延长等待时间(1-2-2-4-8秒),如都没有返回或返回错误,则APIM日志记录 not resolved。

 

参考资料

APIM中对后端API服务的DNS域名缓存问题 :https://www.cnblogs.com/lulight/p/13590755.html

DNS Processes and Interactions : https://learn.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd197552(v=ws.10)?redirectedfrom=MSDN

相关文章
|
19天前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
116 3
|
3月前
|
Java Shell Maven
【Azure Container App】构建Java应用镜像时候遇无法编译错误:ERROR [build 10/10] RUN ./mvnw.cmd dependency:go-offline -B -Dproduction package
在部署Java应用到Azure Container App时,构建镜像过程中出现错误:“./mvnw.cmd: No such file or directory”。尽管项目根目录包含mvnw和mvnw.cmd文件,但依然报错。问题出现在Dockerfile构建阶段执行`./mvnw dependency:go-offline`命令时,系统提示找不到可执行文件。经过排查,确认是mvnw文件内容异常所致。最终通过重新生成mvnw文件解决该问题,镜像成功构建。
|
3月前
|
Arthas 监控 Java
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
|
5月前
|
搜索推荐 Java 定位技术
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
849 20
|
6月前
|
监控 Java Unix
6个Java 工具,轻松分析定位 JVM 问题 !
本文介绍了如何使用 JDK 自带工具查看和分析 JVM 的运行情况。通过编写一段测试代码(启动 10 个死循环线程,分配大量内存),结合常用工具如 `jps`、`jinfo`、`jstat`、`jstack`、`jvisualvm` 和 `jcmd` 等,详细展示了 JVM 参数配置、内存使用、线程状态及 GC 情况的监控方法。同时指出了一些常见问题,例如参数设置错误导致的内存异常,并通过实例说明了如何排查和解决。最后附上了官方文档链接,方便进一步学习。
652 4
|
9月前
|
Java Windows
【Azure Function】部署Java Function失败:报错deploy [ERROR] Status code 401和警告 'China North 3' may not be a valid region
1:deploy [ERROR] Status code 401, (empty body). 2: China North 3 may not be a valid region,please refer to https://aka.ms/maven_function_configuration#supported-regions for values. 3:  <azure.functions.maven.plugin.version>1.36.0</azure.functions.maven.plugin.version>
125 11
|
11月前
|
监控 算法 Java
jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
【11月更文挑战第17天】当JVM相关变更导致压测应用性能下降时,可通过检查变更内容(如JVM参数、Java版本、代码变更)、收集性能监控数据(使用JVM监控工具、应用性能监控工具、系统资源监控)、分析垃圾回收情况(GC日志分析、内存泄漏检查)、分析线程和锁(线程状态分析、锁竞争分析)及分析代码执行路径(使用代码性能分析工具、代码审查)等步骤来定位和解决问题。
211 6
|
11月前
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
201 5
|
12月前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
758 0
Java面试题之cpu占用率100%,进行定位和解决
|
12月前
|
存储 Java
深入理解java对象的访问定位
这篇文章深入探讨了Java对象的访问定位机制,比较了使用句柄和直接指针两种主流的对象访问方式,并指出了它们各自的优势,例如句柄访问在对象移动时的稳定性和直接指针访问的速度优势。
106 1
深入理解java对象的访问定位