Amazon S3에 다운로드하거나 업로드할 때 속도가 느리거나 일관되지 않은 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 3월 6일

Amazon Simple Storage Service(Amazon S3)에 다운로드하거나 업로드할 때 속도가 느리거나 일관되지 않은 문제를 해결하려면 어떻게 해야 합니까? 특정 네트워크 또는 시스템에서 Amazon S3로 다운로드하거나 업로드하는 경우 요청에 지연 시간이 길어질 수 있습니다. 긴 지연 시간 또는 일관되지 않은 속도를 진단하려면 어떻게 해야 합니까?

해결 방법

Amazon S3에 다운로드하거나 업로드할 때 속도가 느리거나 일관되지 않은 문제의 원인을 찾고 해결하려면 다음을 확인하십시오.

  • 요청을 수행하는 클라이언트의 위치
  • 클라이언트 인터넷 서비스 공급자(ISP)
  • 클라이언트 네트워크
  • 클라이언트 리소스
  • Amazon S3에 대한 요청 빈도
  • 반환 시간을 결정하는 Amazon S3 서버 액세스 로그

요청을 수행하는 클라이언트의 위치

클라이언트와 지리적으로 가까운 Amazon S3 버킷을 사용합니다. 버킷은 전 세계에서 액세스할 수 있지만 특정 AWS 리전에 상주합니다. 요청과 버킷 간의 지리적 거리는 응답을 수신하는 데 걸리는 시간에 영향을 미칩니다.

클라이언트와 S3 버킷 간 지리적 거리의 영향을 테스트할 수 있습니다. 예를 들어 버킷과 동일한 AWS 리전에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작하고 다른 리전에서 다른 인스턴스를 시작할 수 있습니다. 두 인스턴스를 사용하여 동일한 파일의 업로드 및 다운로드를 테스트한 다음 두 리전 간의 처리량을 비교합니다.

클라이언트와 S3 버킷 간의 거리를 줄이려면 클라이언트와 더 가까운 다른 리전의 버킷으로 데이터를 이동하는 것이 좋습니다. 원본 버킷의 데이터가 새 리전의 대상 버킷에 복제되도록 리전 간 복제를 구성할 수 있습니다. 또 다른 옵션으로 클라이언트를 S3 버킷에 더 가깝게 마이그레이션하는 것을 고려해 보십시오.

클라이언트 인터넷 서비스 공급자(ISP)

네트워크 경로를 테스트하여 패킷 손실, 높은 홉 수 또는 기타 ISP 관련 문제가 연결이 인터넷을 통과하는 방식에 영향을 미치는지 확인합니다.

mtrtraceroute 같은 도구는 잠재적 패킷 손실에 대한 단서뿐 아니라 원격 호스트로 전송되는 패킷의 지연 시간에 대한 단서를 제공하는 데 도움이 될 수 있습니다. 또한 이러한 도구는 네트워크 홉으로 인해 지연 시간이 길어지는지 파악하는 데 도움이 될 수 있습니다.

예를 들어 다음 Linux traceroute 명령은 TCP 포트 80을 사용하여 us-west-2(오레곤) 리전 엔드포인트와의 연결을 테스트합니다.

sudo traceroute -P TCP -p 80 s3.us-west-2.amazonaws.com

Windows 운영 체제에서는 tracert라는 유사한 도구를 사용할 수 있습니다.

참고: 많은 네트워크 디바이스는 ICMP에 응답하지 않습니다. Amazon S3에 대한 요청과 유사한 테스트의 경우 버킷의 리전 엔드포인트에 대해 TCP traceroute 또는 mtr을 실행해야 합니다.

클라이언트에서 Amazon S3로의 인터넷 라우팅이 최적이 아닌 경우 Amazon CloudFront의 엣지 로케이션을 활용하는 Amazon S3 Transfer Acceleration을 사용하는 것이 좋습니다. Amazon S3 Transfer Acceleration Speed Comparison 도구를 검토하여 Transfer Acceleration이 사용 사례의 성능을 개선할 수 있는지 확인하십시오.

참고: Transfer Acceleration을 활성화하면 추가 데이터 전송 요금이 적용될 수 있습니다. 데이터 전송에 대한 Amazon S3 요금을 검토하십시오.

클라이언트 네트워크

내부 패킷 검사, 안티바이러스 검사 또는 네트워크 액세스 관리 검토를 통해 클라이언트 네트워크가 정상인지 확인합니다. 또한 클라이언트 또는 애플리케이션이 DNS 확인 및 캐싱을 처리하는 방법을 검토합니다.

Amazon S3의 분산 특성과 가용성을 활용하려면 DNS 확인을 장기간 캐싱하지 마십시오.

클라이언트 리소스

애플리케이션에 지연 시간이 발생하거나 요청을 수행하는 호스트가 전송된 요청과 수신된 응답을 처리하는 방법이 있을 수 있습니다. 가장 좋은 방법은 호스트 내에 전체 지연 시간에 영향을 줄 수 있는 리소스 경합(예: CPU, 메모리 또는 네트워크 대역폭 경합)이 없는지 확인하는 것입니다.

운영 체제에 따라 Resource Monitor 또는 top 명령과 같은 도구를 사용하여 대부분의 클라이언트 시스템에서 데이터 전송 중 리소스 사용량을 확인할 수 있습니다.

클라이언트의 스토리지 디바이스 또는 시스템도 지연 시간의 원인일 수 있습니다. 클라이언트의 스토리지 디바이스에 대한 읽기 또는 쓰기 작업에서 지연 시간이 증가하면 Amazon S3로의 다운로드 또는 업로드 성능에 영향을 줄 수 있습니다. 클라이언트 측에서 스토리지 디바이스의 IOPS 문제를 해결해야 하지만 Amazon S3 성능은 Amazon CloudWatch 지표 FirstByteLatency를 사용하여 분석할 수 있습니다.

참고: Amazon S3 CloudWatch 요청 지표는 사용자 지정 지표와 동일한 요금으로 청구됩니다.

FirstByteLatency는 Amazon S3가 클라이언트의 요청을 처리한 후 클라이언트로 응답을 전송하기 시작하는 데 걸린 시간을 보여줍니다. CloudWatch 지표는 버킷 수준의 성능 관점을 제공합니다. Amazon S3 서버 액세스 로그를 사용하여 조사 범위를 좁힐 수 있습니다. 자세한 내용은 Amazon S3 서버 액세스 로그를 참조하여 반환 시간을 확인 섹션을 참조하십시오.

Amazon S3에 대한 요청 빈도

기본적으로 S3 버킷은 접두사당 초당 수천 개의 요청을 지원할 수 있습니다. 클라이언트가 Amazon S3에서 HTTP 5xx 오류 응답을 수신하는 경우, 이는 접두사당 지원되는 요청 빈도를 초과했음을 나타낼 수 있습니다. 5xx 오류를 해결하려면 Amazon S3에서 HTTP 5xx 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

반환 시간을 결정하는 Amazon S3 서버 액세스 로그

Amazon S3 서버 액세스 로깅을 활성화하여 Turn-Around Time 지표를 검토할 수 있습니다. 반환 시간은 요청의 마지막 바이트가 수신된 시점과 응답의 첫 번째 바이트가 전송된 시점 사이의 시간입니다. TTFB(Time To First Byte) 지표입니다. 반환 시간을 사용하여 Amazon S3 관점에서 작업에 걸리는 시간을 확인할 수 있습니다. 그런 다음 전체 다운로드 또는 업로드 지연에 영향을 줄 수 있는 Amazon S3 외부의 다른 지연 시간을 평가할 수 있습니다.

지연 시간이 평소보다 길어지는 경우 요청이 완료될 때까지 기다리지 않고 요청을 다시 시도하는 것이 좋습니다. 이 지침 및 기타 성능 권장 사항에 대한 자세한 내용은 Amazon S3의 성능 지침을 참조하십시오.


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

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


도움이 필요하십니까?