재시도 및 제한 시간 - AWS SDK for .NET

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

재시도 및 제한 시간

AWS SDK for .NET를 사용하면 AWS 서비스에 대한 HTTP 요청의 재시도 횟수 및 제한 시간 값을 구성할 수 있습니다. 재시도 횟수 및 제한 시간의 기본값이 해당 애플리케이션에 적절하지 않은 경우 특정 요구사항에 맞게 조정할 수 있지만, 그렇게 함으로써 해당 애플리케이션의 작동에 어떤 영향을 미칠지 먼저 이해하는 것이 중요합니다.

재시도 횟수 및 제한 시간에 어떤 값을 사용할지 결정하려면 다음 사항을 고려하십시오.

  • 네트워크 연결성이 저하되거나 AWS 서비스에 접속할 수 없는 경우 AWS SDK for .NET와 해당 애플리케이션은 어떻게 대응해야 하는가? 호출이 신속하게 실패하길 원하는가, 아니면 호출이 사용자를 대신하여 계속 재시도하는 것이 적절한가?

  • 해당 애플리케이션은 응답이 필수적인 사용자 지향 애플리케이션이나 웹 사이트인가, 아니면 지연 시간 증가를 더 많이 허용하는 백그라운드 처리 작업인가?

  • 애플리케이션이 지연 시간이 짧은 안정적인 네트워크에 배포되는가, 아니면 연결성이 불안정한 원격 위치에 배포되는가?

재시도

개요

AWS SDK for .NET에서는 서버 측 조절 또는 끊긴 연결로 인해 실패하는 요청을 재시도할 수 있습니다. 서비스 구성 클래스에는 서비스 클라이언트의 재시도 동작을 지정하는 데 사용할 수 있는 두 가지 속성이 있습니다. 서비스 구성 클래스는 추상 Amazon.Runtime에서 이러한 속성을 상속합니다. ClientConfigAPI 참조의 클래스: AWS SDK for .NET

  • MaxErrorRetry는 서비스 클라이언트 수준에서 허용되는 재시도 횟수를 지정합니다. SDK는 작업이 실패하고 예외가 발생하기 전에 지정된 횟수만큼 작업을 재시도합니다.

    애플리케이션의 기본값은 AWS_MAX_ATTEMPTS 환경 변수 또는 공유 AWS 구성 파일의 max_attempts 설정을 사용하여 제어할 수 있습니다.

이러한 속성에 대한 자세한 설명은 초록 Amazon.Runtime에서 확인할 수 있습니다. ClientConfigAPI 레퍼런스의 AWS SDK for .NET 클래스입니다. RetryMode의 각 값은 기본적으로 다음 표에 표시된 것처럼 MaxErrorRetry의 특정 값에 해당합니다.

RetryMode Corresponding MaxErrorRetry (Amazon DynamoDB) Corresponding MaxErrorRetry (all others)
Legacy 10 4
Standard 10 2
Adaptive (experimental) 10 2

동작

애플리케이션이 시작되는 시점

애플리케이션이 시작되면 SDK에서 RetryModeMaxErrorRetry의 기본값을 구성합니다. 이러한 기본값은 다른 값을 지정하지 않는 한 서비스 클라이언트를 생성할 때 사용됩니다.

  • 환경에 속성이 설정되지 않은 경우 RetryMode의 기본값은 레거시로 구성되고 MaxErrorRetry의 기본값은 위 표의 해당 값으로 구성됩니다.

  • 환경에서 재시도 모드가 설정된 경우 해당 값이 RetryMode의 기본값으로 사용됩니다. 환경에 최대 오류 값도 설정되어 있지 않은 경우(다음 설명 참조) MaxErrorRetry의 기본값은 위 표의 해당 값으로 구성됩니다.

  • 환경에서 최대 오류 값이 설정된 경우 해당 값이 MaxErrorRetry의 기본값으로 사용됩니다. Amazon DynamoDB는 이 규칙의 예외입니다. MaxErrorRetry에 대한 DynamoDB의 기본 값은 항상 위 표의 값입니다.

애플리케이션이 실행될 때

서비스 클라이언트를 생성할 때 앞에서 설명한 대로 RetryModeMaxErrorRetry의 기본값을 사용하거나 다른 값을 지정할 수 있습니다. 다른 값을 지정하려면 서비스 클라이언트를 생성할 때 AmazonDynamodbConfig 또는 AmazonSQSconfig와 같은 서비스 구성 객체를 생성하여 포함하십시오.

서비스 클라이언트가 생성된 이후에는 그 값을 바꿀 수 없습니다.

고려 사항

재시도가 이루어지면 해당 요청의 지연 시간이 늘어납니다. 총 요청 지연 시간 및 오류율에 대한 애플리케이션의 제한에 따라 재시도를 구성해야 합니다.

시간 초과

AWS SDK for .NET를 사용하면 요청 제한 시간 및 소켓 읽기/쓰기 제한 시간 값을 서비스 클라이언트 레벨에서 구성할 수 있습니다. 이러한 값은 추상 Amazon.Runtime의 Timeout 및 속성에 지정됩니다. ReadWriteTimeout ClientConfig클래스. 이러한 값은 AWS 서비스 클라이언트 HttpWebRequest객체가 만든 객체의 TimeoutReadWriteTimeout 속성으로 전달됩니다. Timeout 값은 100초, ReadWriteTimeout 값은 300초로 기본 설정되어 있습니다.

해당 네트워크의 지연 시간이 길거나 작업 재시도를 유발하는 조건이 존재하는 경우 제한 시간 및 재시도 횟수의 값을 높이면 일부 SDK 작업이 응답하지 않는 것처럼 보일 수 있습니다.

참고

휴대용 클래스 라이브러리 (PCL) 를 대상으로 AWS SDK for .NET 하는 버전은 HttpClient클래스 대신 클래스를 사용하며 Timeout 속성만 지원합니다. HttpWebRequest

다음은 기본 설정된 제한 시간 값에 대한 예외입니다. 제한 시간 값을 명시적으로 설정하면 이 값들은 무시됩니다.

다음 예제에서는 표준 재시도 모드, 최대 3회의 재시도, 제한 시간 10초, 쓰기/읽기 제한 시간 10초를 지정하는 방법을 보여줍니다(해당하는 경우). AmazonS3Client 생성자에는 AmazonS3Config 객체가 제공됩니다.

var s3Client = new AmazonS3Client( new AmazonS3Config { Timeout = TimeSpan.FromSeconds(10), // NOTE: The following property is obsolete for // versions of the AWS SDK for .NET that target .NET Core. ReadWriteTimeout = TimeSpan.FromSeconds(10), RetryMode = RequestRetryMode.Standard, MaxErrorRetry = 3 });