Amazon S3에서 다운로드하거나 업로드할 때 속도가 느리거나 불안정한 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

특정 네트워크나 시스템에서 Amazon Simple Storage Service(S3)로 다운로드하거나 업로드할 때 지연 시간이 길거나 속도가 일정하지 않은 문제를 해결하고 싶습니다.

해결 방법

Amazon S3에 다운로드하거나 업로드할 때 속도가 느리거나 불안정한 이유를 찾고 해결하려면 다음을 확인하세요.

  • 요청하는 클라이언트의 위치
  • 클라이언트 인터넷 서비스 제공업체(ISP)
  • 클라이언트 네트워크
  • 클라이언트 리소스
  • Amazon S3에 대한 요청 속도
  • Amazon S3 서버는 로그에 액세스하여 반환 시간을 확인합니다.

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

클라이언트와 지리적으로 최대한 가까운 Amazon S3 버킷을 사용하세요. 세계 어디에서나 버킷에 액세스할 수 있지만, 실제 버킷은 특정한 AWS 리전에 위치해 있습니다. 요청과 버킷 사이에 있는 지리적 거리는 응답을 받는 데 걸리는 시간에 영향을 미칩니다.

클라이언트와 S3 버킷 간 지리적 거리가 미치는 영향을 테스트할 수 있습니다. 예를 들어 버킷과 동일한 AWS 리전에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 실행할 수 있습니다. 그 후 다른 리전에서 다른 인스턴스를 실행합니다. 두 인스턴스에서 동일한 파일로 업로드 및 다운로드 테스트를 하고 두 리전의 처리량을 비교해 봅니다.

클라이언트와 S3 버킷 사이의 거리를 줄이려면 데이터를 클라이언트와 더 가까운 리전에 있는 버킷으로 옮기세요. 교차 리전 복제를 구성하면 원본 버킷 데이터를 새 리전에 있는 대상 버킷에 복제할 수 있습니다. 또 다른 방법은 클라이언트를 S3 버킷에 가까운 곳으로 마이그레이션하는 것입니다.

클라이언트 인터넷 서비스 제공업체(ISP)

네트워크 경로를 검토해 인터넷 연결에 영향을 미치는 문제가 있는지 확인합니다. 여기에는 패킷 손실, 홉 개수 초과, 기타 ISP와 관련된 문제가 있을 수 있습니다.

mtrtraceroute와 같은 도구를 이용해 패킷 손실이 발생할 수 있는 잠재적 요인이 있는지 살펴볼 수 있습니다. 또 원격 호스트로 전송되는 패킷 지연 시간을 확인할 수 있습니다. 그리고 이와 같은 도구를 통해 지연 시간을 늘리는 네트워크 홉이 있는지 확인할 수 있습니다.

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

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

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

**참고:**ICMP에 응답하지 않는 네트워크 장치가 많습니다. Amazon S3에 요청과 유사한 테스트를 하려면 버킷 리전 엔드포인트에 TCP 경로 추적이나 mtr을 실행해야 합니다.

클라이언트에서 Amazon S3로 가는 인터넷 경로가 최적이 아니라면, Amazon CloudFront의 엣지 로케이션을 활용하는 Amazon S3 Transfer Acceleration을 사용해 보세요. 내 사례에 Transfer Acceleration을 적용해 성능을 높일 수 있는지 살펴보려면 Amazon S3 Transfer Acceleration 속도 비교 도구를 살펴보세요.

**참고:**Transfer Acceleration 기능을 사용하면 추가 데이터 전송 요금이 부과될 수 있습니다. Amazon S3 데이터 전송 요금을 반드시 확인하세요.

클라이언트 네트워크

내부 패킷 검사, 안티바이러스 검사, 네트워크 액세스 관리를 살펴보고 클라이언트 네트워크가 정상인지 확인합니다. 또 클라이언트나 애플리케이션에서 DNS를 확인하고 캐싱을 처리하는 방법을 살펴보세요.

Amazon S3의 분산 특성과 가용성을 잘 활용하려면 장시간 동안 DNS 확인을 캐싱하는 것을 피하세요.

클라이언트 리소스

애플리케이션이나 요청을 보내는 호스트가 전송 요청과 수신 응답을 처리하는 방식에 지연 시간이 발생할 수 있습니다. 가장 좋은 방법은 호스트 내에서 전체 지연 시간에 영향을 줄 수 있는 리소스 경합이 없도록 확인하는 것입니다. 예를 들어 호스트 내 CPU, 메모리, 네트워크 대역폭과 관련된 리소스 경합이 있을 수 있습니다.

리소스 모니터top 명령 등과 같은 도구를 사용하면 대부분의 클라이언트 시스템에서 데이터를 전송하는 동안 리소스 사용량을 확인할 수 있습니다. 사용 가능한 도구는 운영 체제에 따라 다릅니다.

지연 시간이 발생하는 요인이 클라이언트의 스토리지 디바이스나 시스템일 수 있습니다. 클라이언트 스토리지 디바이스에 대한 읽기나 쓰기 작업의 지연 시간이 긴 경우 Amazon S3로의 다운로드 또는 업로드 성능에 영향을 줄 수 있습니다. 클라이언트측에서 스토리지 디바이스의 IOPS 문제를 해결해야 합니다. Amazon CloudWatch 지표인 FirstByteLatency를 사용해 Amazon S3 성능을 분석할 수 있습니다.

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

Amazon S3가 클라이언트의 요청을 처리하고 응답을 보내는 데 걸리는 시간을 FirstByteLatency을 통해 확인할 수 있습니다 CloudWatch 지표를 통해서는 버킷 수준에서 성능을 확인할 수 있습니다. Amazon S3 서버 액세스 로그를 사용해 조사 범위를 좁힐 수 있습니다. 자세한 내용은 반환 시간을 결정하는 Amazon S3 서버 액세스 로그섹션을 참조하세요.

Amazon S3에 대한 요청 속도

기본적으로 S3 버킷에서는 접두사 당 1초에 수천 개의 요청을 지원할 수 있습니다. 클라이언트가 Amazon S3로부터 HTTP 5xx 오류 응답을 받는 경우 접두사 당 지원되는 요청 속도를 초과했음을 나타냅니다. 5xx 오류를 해결하려면 Amazon S3에서 발생하는 HTTP 500 또는 503 오류를 해결하려면 어떻게 해야 하나요?를 참조하세요.

Amazon S3 서버는 로그에 액세스하여 반환 시간을 확인합니다.

Amazon S3 서버 액세스 로깅을 켜서 반환 시간 지표를 확인할 수 있습니다. 반환 시간은 요청의 마지막 바이트가 수신된 시점에서부터 응답의 첫 번째 바이트가 전송된 시점까지 걸린 시간입니다. 이는 Time To First Byte(TTFB) 지표입니다. 반환 시간을 사용해 Amazon S3에서 작업에 걸리는 시간을 결정할 수 있습니다. 그 후 Amazon S3 외부의 다른 지연 시간을 평가해 다운로드나 업로드 속도가 전반적으로 저하되는 요인을 찾아낼 수 있습니다.

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

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음