http 请求中时不时发生的 ENOTFOUND 错误意味着什么?

Sas*_*vus 5 httprequest node.js

我有一个 Nodejs 服务器,在托管云计算机上运行。一个http请求

\n\n
var req = Http.request(options, function(res) { ... }\n
Run Code Online (Sandbox Code Playgroud)\n\n

有选项

\n\n
host: "www.mysite.com\xe2\x80\x9d    \nport: "8080"\nmethod: \xe2\x80\x9cGET\xe2\x80\x9d\npath: \xe2\x80\x9c/someurl\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n\n

有时会回复此错误(假设十分之一)

\n\n
{"code":"ENOTFOUND","errno":"ENOTFOUND","syscall":"getaddrinfo"}\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在的问题是这个错误可能意味着什么。

\n\n

该请求似乎是正确的(正确的路径、正确的端口、url 活动且摇摆、路径中不包含 http 协议、路径是到在同一台计算机上运行的站点的 drupal 页面)并且它几乎一直有效。有时,没有明显的原因,它会失败。

\n\n

最近,我注意到机器上存在有关 ipv6 的问题,我必须在 sysctl 上禁用它才能正常工作。在有关 ipv6 的问题出现后,问题的精确度令人怀疑。也许这个错误是由机器本身的一些 dns 问题引起的(所以我必须责怪我的主机)?

\n

rob*_*lep 6

这是 DNS 错误,具体来说,Node 无法将主机名“www.mysite.com”解析为 IP 地址。

造成这种情况的原因可能有多种:

  • 主机名无效
  • 你的网络连接有问题
  • 你的DNS服务器有问题
  • 处理“mysite.com”的 DNS 服务器有故障

需要注意的是:虽然您的问题是有效的,但调试根本原因(DNS 问题)在 StackOverflow 上是偏离主题的。