本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
重试次数和超时
这些区域有:Amazon SDK for .NET可让您配置 HTTP 请求的重试次数和超时值。Amazon服务。如果重试和超时的默认值不适用于您的应用程序,您可以针对具体要求调整这些值,但请务必了解这样做将对应用程序的行为带来什么影响。
在确定重试和超时值时,请考虑以下因素:
-
应该如何Amazon SDK for .NET在网络连接降级或Amazon服务无法获得? 您是希望调用快速失败,还是希望调用代表您不断重试?
-
您的应用程序是必须能够及时响应的面向用户的应用程序或网站,还是更能容忍延迟增加的后台处理任务?
-
应用程序是部署在具有低延迟的可靠网络上,还是部署在具有不可靠连接的远程位置?
重试
概览
这些区域有:Amazon SDK for .NET可以重试因服务器端限制或断开连接导致失败的请求。可以使用服务配置类的两个属性来指定服务客户端的重试行为。服务配置类从抽象中继承这些属性Amazon.runtime.Client 配置类Amazon SDK for .NETAPI 参考:
-
RetryMode
指定三种重试模式之一,这些模式在Amazon.runtime.请求重试模式枚举。您的应用程序的默认值可以通过使用
AWS_RETRY_MODE
环境变量或retry_mode在共享中设置Amazon配置文件。
-
MaxErrorRetry
指定服务客户端级别允许的重试次数;在失败并引发异常之前,SDK 将重试操作指定次数。您的应用程序的默认值可以通过使用
AWS_MAX_ATTEMPTS
环境变量或max_attempts在共享中设置Amazon配置文件。
摘要中可以找到这些属性的详细说明。Amazon.runtime.Client 配置类Amazon SDK for .NETAPI 参考. 的每个值RetryMode
默认情况下对应于MaxErrorRetry
,如下表所示。
RetryMode | Corresponding MaxErrorRetry (Amazon DynamoDB) | Corresponding MaxErrorRetry (all others) |
---|---|---|
Legacy | 10 | 4 |
Standard | 10 | 2 |
Adaptive (experimental) | 10 | 2 |
Behavior
应用程序启动时
当你的应用程序启动时,默认值RetryMode
和MaxErrorRetry
是由 SDK 配置的。除非指定其他值,否则在创建服务客户端时使用这些默认值。
-
如果您的环境中没有设置属性,则默认为
RetryMode
被配置为传统默认值为MaxErrorRetry
使用上表中的相应值进行配置。 -
如果在您的环境中设置了重试模式,则该值将用作
RetryMode
. 默认值为MaxErrorRetry
将使用上表中的相应值配置,除非您的环境中也设置了最大错误值(下文将介绍)。 -
如果在您的环境中设置了最大错误值,则该值将用作
MaxErrorRetry
. Amazon DynamoDB 是此规则的例外;MaxErrorRetry
始终是前表中的值。
当你的应用程序运行
在创建服务客户端时,可以使用默认值RetryMode
和MaxErrorRetry
,如前所述,也可以指定其他值。要指定其他值,请创建并包括一个服务配置对象,例如AmazonDynamoDBConfig要么AmazonSQsConfig当你创建服务客户端时。
服务客户端一旦创建,便不可更改。
注意事项
在发生重试时,请求的延迟将增加。您应根据应用程序对请求总延迟和错误率的限制来配置重试次数。
超时
这些区域有:Amazon SDK for .NET可让您配置服务客户端级别的请求超时和套接字读取/写入超时值。这些值在Timeout
和ReadWriteTimeout
摘要的属性Amazon.runtime.Client 配置类。这些值作为Timeout
和ReadWriteTimeout
的属性HttpWebRequestTimeout
值为 100 秒,ReadWriteTimeout
值为 300 秒。
当您的网络具有高延迟或存在导致操作重试的情况时,使用较长的超时值和较高的重试次数会导致一些开发工具包操作看上去没有响应。
针对可移植类库 (PCL) 的Amazon SDK for .NET版本使用 HttpClientHttpWebRequest
类,并且仅支持 Timeout
以下是默认超时值的例外情况。明确设置超时值时将覆盖这些值。
-
Timeout
和ReadWriteTimeout
如果被调用的方法上传流,则设置为最大值,例如Amazons3Client.putojectasSync ()、Amazons3Client。上传 Partasync ()、AmazongLacier 客户端。上传档案 aSync (),等等。 -
的版本Amazon SDK for .NET套装的目标 .NET Framework
Timeout
和ReadWriteTimeout
到所有人的最大值卓越亚马逊 3 客户端和AmazonGlacierClient对象。 -
的版本Amazon SDK for .NET以便携式类库 (PCL) 和 .NET 核心集为目标
Timeout
达到所有人的最大价值卓越亚马逊 3 客户端和AmazonGlacierClient对象。
示例
以下示例向您演示如何指定标准重试模式、最多 3 次的重试次数、10 秒的超时值以及 10 秒的读取/写入超时值。这些区域有:卓越亚马逊 3 客户端构造函数被赋予Amazons3Config对象。
var s3Client = new AmazonS3Client( new AmazonS3Config { Timeout = TimeSpan.FromSeconds(10), // NOTE: The following property is obsolete for // versions of the Amazon SDK for .NET that target .NET Core. ReadWriteTimeout = TimeSpan.FromSeconds(10), RetryMode = RequestRetryMode.Standard, MaxErrorRetry = 3 });