Azure Function 中的间歇性 DNS 故障

问题描述 投票:0回答:1

我有一个在 Azure 上运行的 Node.js 计时器函数(Node.js v18、Linux、Conclusion)间歇性失败,原因似乎是 DNS 查找失败。该功能每 30 分钟运行一次。它会正常工作几天,然后开始出现故障 12-24 小时,然后再次开始工作。

这是日志中的错误。当

@hubspot/api-client
库向 HubSpot API 发送请求时,会发生此错误。这是一个公共 API,主机为 api.hubapi.com。

Exception: request to https://api.hubapi.com/crm/v3/objects/products?limit=100&after=2663219990&properties=hs_lastmodifieddate%2Chs_sku%2Chs_images&archived=false failed, reason: getaddrinfo EAI_AGAIN api.hubapi.com

根据我的研究,以下是我尝试过的一些方法:

  1. @hubspot/api-client
    依赖项更新到最新版本,以防库出现问题。
  2. 在 Function App 中,我将出站 DNS 更改为自定义,列出 Cloudflare (1.1.1.1) 和 Quad9 (9.9.9.9),而不是默认的 Azure DNS,以防 Azure DNS 出现问题。

这两项更改并没有帮助解决问题。此功能在本地以及之前部署的 GCP 上运行良好。

node.js azure azure-functions
1个回答
0
投票

只是一些想法: 从消费计划中的 Azure 函数运行任何 http 请求都可能会产生此类异常(在 .net 中): • 没有已知的此类主机 • 请求被取消 • 无法解析远程名称 • 未从远程服务器收到完整响应 • 无法将完整的请求发送到远程服务器 • 请求的名称有效,但未找到请求类型的数据 • 连接尝试失败,因为连接方未正确
这些通常源于您在没有 vNet 的情况下运行并使用某种共享或公共 DNS 服务器的事实。相比之下,针对其他 Azure 服务(PAAS、IAAS 等)的 SDK 操作具有嵌入的重试功能,因此您不会正式遇到这些错误。因此,总的来说,如果使用中的 Azure Functions 必须通过 http 客户端连接到任何其他服务,则必须确保这些连接具有重试功能。

© www.soinside.com 2019 - 2024. All rights reserved.