VPC의 Amazon EC2 Linux 인스턴스와 온프레미스 호스트 간의 네트워크 성능 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 9월 24일

인터넷 게이트웨이를 통해 Amazon EC2(Amazon Elastic Compute Cloud) Linux 인스턴스와 온프레미스 호스트 간에 네트워크 성능 문제가 발생합니다. 이러한 패킷 손실 또는 지연 시간 문제를 해결하려면 어떻게 해야 합니까?

​해결 방법

참고: 문제 해결을 시작하기 전에 소스 및 대상 IP 주소를 확인합니다. 대상이 URL인 경우, dig 명령을 사용하여 IP 주소를 확인합니다. 일부 URL은 동적 IP 주소를 사용하므로 IP 주소가 변경될 수 있습니다. 명령을 여러 번 실행하여 IP 주소가 일정한지 확인합니다.

traceroute를 사용하여 네트워크 문제 확인

1.    다음 명령을 실행하여 traceroute을 설치합니다.

Linux:

sudo yum install traceroute

Ubuntu:

sudo apt-get install traceroute

2.    다음 명령을 실행하여 traceroute를 실행합니다.

ICMP 기반 traceroute:

sudo traceroute <Public IP of EC2 instance/on-premises host>

TCP 기반 traceroute:

sudo traceroute -T -p <destination port> <Public IP of EC2 instance/on-premises host>

3.    traceroute 출력을 검토합니다.

  • 지연 시간의 출처가 내부 네트워크의 홉인지 확인합니다.
  • 대상으로 진행되는 지연 시간이 갑자기 급증하는 경우, 스파이크가 시작된 홉에 문제가 있을 수 있습니다.
  • 중간 홉에서 지연 시간이 길지만 출력 시작 또는 종료 시 지연 시간이 없는 경우, 문제가 없을 수 있습니다. 이 경우 긴 지연 시간은 traceroute 트래픽의 우선 순위를 낮추는 중간 홉에 의한 결과일 수 있습니다.

MTR을 사용하여 패킷 손실 문제 해결

1.    다음 명령을 실행하여 MTR을 설치합니다.
 
Linux:
sudo yum install mtr

Ubuntu:

sudo apt-get install mtr

2.    다음 명령을 실행하여 MTR을 실행합니다.

ICMP 기반 MTR:

mtr -n -c <number of packets> <Public IP EC2 instance/on-premises host>

TCP 기반 MTR:

mtr -n -t -p <destination port> -c <number of packets> <Public IP EC2 instance/on-premises host>

3.    MTR 출력을 검토합니다. 상향식 접근 방식을 사용하여 홉을 검토합니다. 예를 들어 마지막 홉 또는 대상에서 손실이 있는지 확인하고 그 앞의 홉을 검토합니다.

소스 호스트 또는 대상 호스트 문제 확인

소스 또는 대상 호스트에 대한 액세스 권한이 있는 경우:

1.    top 명령을 실행하여 CPU 및 메모리 사용률 또는 평균 로드 문제를 식별합니다.

2.    최상위 출력을 검토합니다.

  • 출력의 세 번째 행은 사용 중인 CPU의 백분율을 나타냅니다. CPU 비율이 높으면 성능이 저하됩니다.
  • 네 번째 행은 사용 중인 총 메모리, 사용 가능한 총 메모리 및 캐시된 총 버퍼를 비롯한 RAM 사용량을 나타냅니다.
  • CPU 또는 메모리 사용률이 높은 경우, 원인을 확인한 다음 조정 가능한 부분을 조정합니다.

애플리케이션 문제 확인

MTR 및 traceroute 출력에 의심스러운 내용이 표시되지 않은 경우, 지연 시간이 애플리케이션에 의해 유발된 것일 수 있습니다. 애플리케이션 문제가 원인인지 확인하려면 hping3 도구를 사용하여 애플리케이션이 수신 대기하는 포트로 제작된 패킷을 전송합니다.

1.    다음 명령을 실행하여 hping3를 설치합니다.

Linux:

sudo yum --enablerepo=epel install hping3

Ubuntu:

sudo apt-get install hping3

2.    다음 명령을 실행하여 대상 포트를 통해 TCP SYN 패킷을 전송합니다.
참고: 기본적으로 hping3는 창 크기가 64이고 TCP 플래그를 포함하지 않는 TCP 헤더를 대상 호스트의 포트 0으로 전송합니다.

hping3 -S -c <number of packets> -V <Public IP of EC2 instance/on-premises host> -P <destination port>

3.    hping3 출력을 검토하여 전송된 패킷 수, 수신된 패킷 수 및 패킷 손실량(손실이 있는 경우)을 확인합니다. 이 데이터를 사용하면 애플리케이션이 제출된 요청의 일부 또는 전체를 처리하는지 여부를 확인할 수 있습니다.

tcpdump를 사용하여 소스 호스트와 대상 호스트에서 동시에 패킷 캡처 수행

위의 단계 중 어느 것도 성능 문제의 원인을 파악하는 데 도움이 되지 않는 경우, 패킷 캡처를 통해 추가 조사를 실시할 수 있습니다. 패킷 캡처를 사용하여 호스트 수준 또는 TCP 스택의 문제를 확인할 수 있습니다. 패킷 캡처는 상당한 양의 재전송, 조각화 또는 잘못된 형식의 패킷을 보여줄 수도 있습니다.

1.    다음 명령을 실행하여 tcpdump를 설치합니다.

Linux:

sudo yum install tcpdump

Ubuntu:

sudo apt-get install tcpdump

2.    tcpdump 명령을 실행하여 패킷 캡처 샘플을 테스트합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?