【问题标题】:Intermitent EAI_AGAIN error on node server节点服务器上的间歇性 EAI_AGAIN 错误
【发布时间】:2019-11-22 06:30:49
【问题描述】:

我的 nodejs 应用程序连接到外部 url 并使用响应。 该应用程序大部分时间都运行良好,但我偶尔会收到 EAI_AGAIN。

error:{code:EAI_AGAIN, errno:EAI_AGAIN,syscall:getaddrinfo,hostname:**.com,host:***.com,port:443}

我回答了一些与 EAI_AGAIN 相关的问题。没有解决我的目的。 看到DNS名称解析失败时会出现这个错误。

我的担忧是

1) 当我检查日志时。在失败的请求之前有很多成功的请求,在失败的请求之后也有很多成功的请求。为什么只有一个请求就失败了?

2) 真正的原因可能是什么?我想知道所有的可能性。

3) 原因可能是我们正在连接的外部服务的问题吗?

4) 如果有人可以帮助重现该问题,那就太好了。

注意:我们使用的是 docker 容器。如果这有什么关系。

【问题讨论】:

标签: node.js rest dns request network-programming


【解决方案1】:

背景

实际上,错误来自getaddrinfo 系统调用。这会触发操作系统在 99% 的情况下执行 DNS 查询。查看the man pagegetaddrinfo,我们看到以下有关EAI_AGAIN 错误的信息:

   EAI_AGAIN
          The name server returned a temporary failure indication.  Try
          again later.

这基本上告诉我们,当我们看到这个错误时,DNS 服务器(名称服务器)给了我们一个错误的响应。它可能会以某种方式负担,要么主动响应错误,要么根本不响应。

问题

  1. 错误取决于 DNS 服务器的状态,从您的角度来看,这可能是不确定的,但可能与请求率相关。您可以查看当您有另一个程序(参见 #4)攻击 DNS 服务器时,错误是否更频繁地出现。
  2. 见 #1
  3. 是的,见 #1
  4. 使用以下步骤对您的DNS server 进行负载测试,然后运行您的程序,看看它是否更频繁地发生。

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 2011-01-05
    • 2012-08-22
    • 2013-11-18
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多