我经常收到这个错误:
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,IST 12:14:31 的错误应该在 UTC 06:44:31 有一个 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。
停止并重新启动实例解决了这个问题。