首页 > 编程语言 >【APIM】Azure APIM抛出 java.lang.RuntimeException 错误定位

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

时间:2024-05-21 18:08:38浏览次数:25  
标签:lang java DNS 服务器 Azure APIM response 客户端

问题描述

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

 

 

标签:lang,java,DNS,服务器,Azure,APIM,response,客户端
From: https://www.cnblogs.com/lulight/p/18204697

相关文章

  • Java语言有哪些特点
    Java语言有以下主要特点:1.简单性:Java设计时简化了C++的一些复杂特性,比如没有指针,自动内存管理(垃圾回收)。它的语法接近C/C++,但移除了容易出错的部分,如运算符重载和多重继承。2.面向对象:Java是纯面向对象的语言,一切皆对象。支持类、接口、继承、封装、多态等面向对象特性。......
  • Spring中的“Unknown return value type: java.lang.Boolean“问题
    这个问题是关于方法返回值类型的,错误信息通常是这样的:java.lang.IllegalArgumentException:Unknownreturnvaluetype:java.lang.Boolean......
  • 代码审计——基础(JAVASE)
    JAVASE目录JAVASE基本语法关键字变量作业1作业完成第一题:简单的介绍了java语言历史,优势、发展第二题:特性:面向对象、跨平台、封装、继承、多态、抽象、扩展性、健壮性、垃圾回收机制、虚拟机第三题:变量、注释、关键字、数据类型、选择判断语句、循环语句、数组、break、continue、......
  • javascript去重累加
    /*对于"day1总杯数"字段的各行数据,进行去重累加*/functionconvertNullToZero(value){  if(isNaN(value)===true){    return0;  }else{    returnvalue;  }}vardata1=[];for(vari=0;i<data.length;i++){  varrow=data......
  • JavaWeb分布式事务处理
    哈喽,大家好,我是木头左!一、分布式事务的概念与特性在开始之前,首先需要理解什么是分布式事务以及其特性。将从最基础的定义和特性开始,逐步深入到其在实际应用中的表现和影响。1.1分布式事务的概念分布式事务是指跨越多个独立的计算机资源(如数据库、应用服务器等)的一组事务的......
  • Java 中的深拷贝和浅拷贝你了解吗?
    前言Java开发中,对象拷贝是常有的事,很多人可能搞不清到底是拷贝了引用还是拷贝了对象。本文将详细介绍相关知识,让你充分理解Java拷贝。一、对象是如何存储的?方法执行过程中,方法体中的数据类型主要分两种,它们的存储方式是不同的(如下图):基本数据类型:直接存储在栈帧的局部变......
  • JavaScript execute asynchronous functions in Parallel with count and Promise All
    JavaScriptexecuteasynchronousfunctionsinParallelwithcountandPromiseAllInOneJavaScript使用count和Promise并行执行异步函数errorsfunctionpromiseAll<T>(functions:Fn<T>[]):Promise<T[]>{returnnewPromise((resolve,reject)=&......
  • 在 JavaScript 中递归展开数组
    对嵌套数组使用递归:递归是处理嵌套数组的干净而有效的方法。它允许您处理任意深度的数组。使用该Array.isArray方法检查数组:这有助于确保代码适用于不同的数据类型并且更加健壮。 潜在性能问题:对大型数组要小心:处理非常深或很大的数组时,递归函数可能会导致堆栈溢出错误。在这......
  • Java开发Spring常见注解
    Java开发Spring常见注解  前言  Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者SpringXML配置方式。  注解本身没有功能的,就和xml一样。注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓配置......
  • Java中CAS算法的集中体现:Atomic原子类库,你了解吗?
    一、写在开头在前面的博文中我们学习了volatile关键字,知道了它可以保证有序性和可见性,但无法保障原子性,结局原子性问题推荐使用synchronized、Lock或者AtomicInteger;我们还学习过CAS算法,在那篇博文中我们同样也提及atomic。那么今天,我们就来好好学一学Atomic原子库,一个基于CAS算......