我經常收到此錯誤:
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。
停止並重新啟動實例為我解決了這個問題。