이 오류가 계속 자주 발생합니다.
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 항목이 있어야 합니다.
@matigo의 답변을 참조하여 평균 패킷 크기를 호출당 4개의 패킷으로 간주하면 초당 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 Resolver인 경우 EC2에서 가능할 것이라고 말했습니다.
이 시점에서 이것이 PPS 제한 문제인지 아니면 다른 문제인지 혼란스럽습니다.
답변1
제한에 도달하지 않은 인스턴스에서도 동일한 오류가 발생했습니다. 얼마 후 하드웨어 문제일 수 있다는 AWS 지원 스레드를 우연히 발견했습니다.
인스턴스의 물리적 기본 호스트(i-3d124c6d)에 간헐적으로 문제가 발생한 것으로 보이며, 그 중 일부는 분명히 서비스 중단을 야기했을 것입니다.
이 인스턴스를 중지하고 시작해 보시겠습니까? 그렇게 하면 새로운 기본 하드웨어에서 해당 문제가 발생하게 되며, 귀하의 Pingdom 서비스를 활용하여 추가 문제가 발생하는지 확인할 수 있습니다.
에서:https://forums.aws.amazon.com/thread.jspa?threadID=171805.
인스턴스를 중지했다가 다시 시작하면 문제가 해결되었습니다.