このエラーが頻繁に発生します:
Severity: Warning --> mysqli::real_connect(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
この問題は、サーバーの再起動後にのみ解決されます。毎日何百万ものリクエストがあるライブ サーバーでこの問題が発生することを考慮すると、再起動は最善の選択肢ではありません。
[編集済み]
私はUbuntu 18.04を使用しており、AWS上のAurora Clusterに接続しており、バックエンドコードは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 のエントリが存在するはずです。
@matigoの回答を参考に、平均パケットサイズを1回の呼び出しあたり4パケットとすると、1秒あたり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
一部のエントリは 1 秒あたり 22 回の DNS 呼び出しの制限を超えましたが、php_network_getaddresses エラーは発生しませんでした。
したがって、ここで何が問題なのかはわかりません。
また、これは LAN 内の不正な DHCP サーバーによって発生する可能性があるという人もいましたが、それを特定する方法はわかりません。また、構成されている DNS が AWS Route53 Resolver のみである場合、EC2 でも発生する可能性があります。
この時点では、これが PPS 制限の問題なのか、それとも何か他の問題なのか混乱しています。
答え1
制限に達していないインスタンスでも同じエラーが発生しました。しばらくして、ハードウェアの問題である可能性があることを示す AWS サポート スレッドを見つけました。
インスタンス (i-3d124c6d) の物理的な基盤ホストに断続的に問題が発生していたようですが、その一部は間違いなくサービスの中断を引き起こしていたでしょう。
このインスタンスを停止して起動してみていただけますか? そうすることで、新しい基盤ハードウェア上でインスタンスが起動され、pingdom サービスを利用してさらに問題が発生するかどうかを確認できます。
から:https://forums.aws.amazon.com/thread.jspa?threadID=171805。
インスタンスを停止して再起動すると、問題は解決しました。