php_network_getaddresses:getaddrinfo 失敗:名稱解析暫時失敗

php_network_getaddresses:getaddrinfo 失敗:名稱解析暫時失敗

我經常收到此錯誤:

Severity: Warning --> mysqli::real_connect(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

此問題只有在伺服器重新啟動後才能解決。考慮到這種情況發生在每天有數百萬個請求的即時伺服器上,重新啟動並不是最佳選擇。

[已編輯]

我正在使用 Ubuntu 18.04 並連接到 AWS 上的 Aurora 集群,後端程式碼駐留在 EC2 上

Askubuntu 上的 @matigo 似乎認為我可能已經達到極限:

https://askubuntu.com/a/1363447/135086

因此,我進行了一些調試,以了解我是否真的達到了 1024 PPS 限制。幸運的是,有一篇 AWS 文章似乎幫助我了解這一點,

https://aws.amazon.com/premiumsupport/knowledge-center/vpc-find-cause-of-failed-dns-queries/

我嘗試使用命令來了解我目前正在點擊的 PPS 並進行監視,直到找到錯誤。

ERROR - 2021-09-20 12:14:31.547863 --> Severity: Warning --> mysqli::real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

令我驚訝的是,以下是AWS文章中提到的命令的輸出

tcpdump  -r <file_name.pcap> -nn dst port 53 | awk -F " " '{ print $1 }' | cut -d"." -f1 | uniq -c


  2 06:44:22
  6 06:44:24
  4 06:44:26
  2 06:44:28
  4 06:44:30
  7 06:44:34
  2 06:44:38
  7 06:44:39
  9 06:44:44
  6 06:44:46
  4 06:44:49
  6 06:44:50

考慮到時區為 +05:30,12:14:31 IST 處的錯誤應該在 06:44:31 UTC 處有一個 dns 條目。

如果我們將平均資料包大小考慮為每次調用 4 個資料包,請參考 @matigo 的答案,我不會達到每秒 22 個 dns 呼叫。因此進一步查看日誌,

  4 06:39:06
 26 06:39:09
  4 06:39:10
  2 06:39:13
  6 06:39:16
 16 06:39:17

某些條目已超過每秒 22 個 dns 呼叫限制,我們沒有遇到 php_network_getaddresses 錯誤。

所以我不確定這裡的問題是什麼。

有人還說,這可能是由於 LAN 中的惡意 DHCP 伺服器造成的,不確定如何識別它,或者當唯一配置的 DNS 是 AWS Route53 解析器時,在 EC2 上是否可能發生這種情況。

此時我很困惑,這是否是 PPS 限制問題或其他問題。

答案1

我在未達到限制的實例上遇到了相同的錯誤。一段時間後,我偶然發現 AWS 支援線程表明這可能是硬體問題。

您的實例的實體底層主機 (i-3d124c6d) 似乎間歇性地出現問題,其中一些問題肯定會導致服務中斷。

您可以嘗試停止並啟動該實例嗎?這樣做將導致它在新的底層硬體上啟動,然後我們可以利用您的 pingdom 服務來驗證是否出現進一步的問題。

從:https://forums.aws.amazon.com/thread.jspa?threadID=171805

停止並重新啟動實例為我解決了這個問題。

相關內容