기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
재시도 및 제한 시간
AWS SDK for .NET를 사용하면 AWS 서비스에 대한 HTTP 요청의 재시도 횟수 및 제한 시간 값을 구성할 수 있습니다. 재시도 횟수 및 제한 시간의 기본값이 해당 애플리케이션에 적절하지 않은 경우 특정 요구사항에 맞게 조정할 수 있지만, 그렇게 함으로써 해당 애플리케이션의 작동에 어떤 영향을 미칠지 먼저 이해하는 것이 중요합니다.
재시도 횟수 및 제한 시간에 어떤 값을 사용할지 결정하려면 다음 사항을 고려하십시오.
-
네트워크 연결성이 저하되거나 AWS 서비스에 접속할 수 없는 경우 AWS SDK for .NET와 해당 애플리케이션은 어떻게 대응해야 하는가? 호출이 신속하게 실패하길 원하는가, 아니면 호출이 사용자를 대신하여 계속 재시도하는 것이 적절한가?
-
해당 애플리케이션은 응답이 필수적인 사용자 지향 애플리케이션이나 웹 사이트인가, 아니면 지연 시간 증가를 더 많이 허용하는 백그라운드 처리 작업인가?
-
애플리케이션이 지연 시간이 짧은 안정적인 네트워크에 배포되는가, 아니면 연결성이 불안정한 원격 위치에 배포되는가?
재시도
개요
AWS SDK for .NET에서는 서버 측 조절 또는 끊긴 연결로 인해 실패하는 요청을 재시도할 수 있습니다. 서비스 구성 클래스에는 서비스 클라이언트의 재시도 동작을 지정하는 데 사용할 수 있는 두 가지 속성이 있습니다. 서비스 구성 클래스는 추상 Amazon.Runtime에서 이러한 속성을 상속합니다. ClientConfigAPI 참조의 클래스: AWS SDK for .NET
-
RetryMode
Amazon.Runtime에 정의된 세 가지 재시도 모드 중 하나를 지정합니다. RequestRetryMode열거형.애플리케이션의 기본값은
AWS_RETRY_MODE
환경 변수 또는 공유 AWS 구성 파일의 retry_mode 설정을 사용하여 제어할 수 있습니다.
-
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에서 RetryMode
및 MaxErrorRetry
의 기본값을 구성합니다. 이러한 기본값은 다른 값을 지정하지 않는 한 서비스 클라이언트를 생성할 때 사용됩니다.
-
환경에 속성이 설정되지 않은 경우
RetryMode
의 기본값은 레거시로 구성되고MaxErrorRetry
의 기본값은 위 표의 해당 값으로 구성됩니다. -
환경에서 재시도 모드가 설정된 경우 해당 값이
RetryMode
의 기본값으로 사용됩니다. 환경에 최대 오류 값도 설정되어 있지 않은 경우(다음 설명 참조)MaxErrorRetry
의 기본값은 위 표의 해당 값으로 구성됩니다. -
환경에서 최대 오류 값이 설정된 경우 해당 값이
MaxErrorRetry
의 기본값으로 사용됩니다. Amazon DynamoDB는 이 규칙의 예외입니다.MaxErrorRetry
에 대한 DynamoDB의 기본 값은 항상 위 표의 값입니다.
애플리케이션이 실행될 때
서비스 클라이언트를 생성할 때 앞에서 설명한 대로 RetryMode
및 MaxErrorRetry
의 기본값을 사용하거나 다른 값을 지정할 수 있습니다. 다른 값을 지정하려면 서비스 클라이언트를 생성할 때 AmazonDynamodbConfig 또는 AmazonSQSconfig와 같은 서비스 구성 객체를 생성하여 포함하십시오.
서비스 클라이언트가 생성된 이후에는 그 값을 바꿀 수 없습니다.
고려 사항
재시도가 이루어지면 해당 요청의 지연 시간이 늘어납니다. 총 요청 지연 시간 및 오류율에 대한 애플리케이션의 제한에 따라 재시도를 구성해야 합니다.
시간 초과
AWS SDK for .NET를 사용하면 요청 제한 시간 및 소켓 읽기/쓰기 제한 시간 값을 서비스 클라이언트 레벨에서 구성할 수 있습니다. 이러한 값은 추상 Amazon.Runtime의 Timeout
및 속성에 지정됩니다. ReadWriteTimeout
ClientConfig클래스. 이러한 값은 AWS 서비스 클라이언트 HttpWebRequestTimeout
및 ReadWriteTimeout
속성으로 전달됩니다. Timeout
값은 100초, ReadWriteTimeout
값은 300초로 기본 설정되어 있습니다.
해당 네트워크의 지연 시간이 길거나 작업 재시도를 유발하는 조건이 존재하는 경우 제한 시간 및 재시도 횟수의 값을 높이면 일부 SDK 작업이 응답하지 않는 것처럼 보일 수 있습니다.
참고
휴대용 클래스 라이브러리 (PCL) 를 대상으로 AWS SDK for .NET 하는 버전은 HttpClientHttpWebRequest
다음은 기본 설정된 제한 시간 값에 대한 예외입니다. 제한 시간 값을 명시적으로 설정하면 이 값들은 무시됩니다.
-
Timeout
호출되는 메서드가 스트림을 업로드하는 경우 최대값으로 설정됩니다 (예: Amazon S3Client).ReadWriteTimeout
PutObjectAsync(), 아마존 S3 클라이언트. UploadPartAsync(),. AmazonGlacierClient UploadArchiveAsync() 등등. -
AWS SDK for .NET해당 대상 .NET Framework의 버전
Timeout
및ReadWriteTimeout
모든 Amazon S3 클라이언트 및 객체에 대한 최대값 설정 AmazonGlacierClient -
AWS SDK for .NET해당 버전은 휴대용 클래스 라이브러리 (PCL) 와 .NET Core를 대상으로 하며 모든 Amazon S3 클라이언트 및 객체에 대해
Timeout
최대값으로 설정되어 있습니다. AmazonGlacierClient
예
다음 예제에서는 표준 재시도 모드, 최대 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 });