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 항목이 있어야 합니다.

@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.

인스턴스를 중지했다가 다시 시작하면 문제가 해결되었습니다.

관련 정보