Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Wiederholungen und Timeouts
Mit der AWS SDK for .NET können Sie die Anzahl der Wiederholungen und die Timeout-Werte für HTTP-Anfragen an -AWSServices konfigurieren. Wenn die Standardwerte für Wiederholversuche und Zeitüberschreitungen für Ihre Anwendung nicht geeignet sind, können Sie sie an Ihre speziellen Anforderungen anpassen. Es ist jedoch wichtig, zu verstehen, wie sich dies auf das Verhalten Ihrer Anwendung auswirkt.
Bei der Bestimmung der Werte für Wiederholversuche und Zeitüberschreitungen gilt es, folgende Überlegungen anzustellen:
-
Wie sollten die AWS SDK for .NET und Ihre Anwendung reagieren, wenn die Netzwerkkonnektivität nachlässt oder ein -AWSService nicht erreichbar ist? Soll der Aufruf schnell fehlschlagen oder ist es angemessen, wenn er in Ihrem Auftrag wiederholt versucht wird?
-
Handelt es sich bei Ihrer Anwendung um eine benutzerbezogene Anwendung bzw. Website, die reaktionsfähig sein muss, oder ist es eine Hintergrundverarbeitung mit einer höheren Toleranz für mehr Latenzen?
-
Wird die Anwendung in einem zuverlässigen Netzwerk mit geringer Latenz bereitgestellt oder wird sie an einem Remote-Standort mit unzuverlässiger Konnektivität bereitgestellt?
Wiederholversuche
Übersicht
Der AWS SDK for .NET kann Anforderungen wiederholen, die aufgrund serverseitiger Drosselung oder unterbrochener Verbindungen fehlschlagen. Es gibt zwei Eigenschaften von Service-Konfigurationsklassen, mit denen Sie das Wiederholungsverhalten eines Service-Clients angeben können. Service-Konfigurationsklassen erben diese Eigenschaften von der abstrakten Amazon.Runtime.ClientConfig-Klasse der AWS SDK for .NET API-Referenz :
-
RetryMode
gibt einen von drei Wiederholungsmodi an, die in der Amazon.Runtime.RequestRetryMode-Aufzählung definiert sind.Der Standardwert für Ihre Anwendung kann mithilfe der
AWS_RETRY_MODE
Umgebungsvariablen oder der Einstellung retry_mode in der AWS freigegebenen Konfigurationsdatei gesteuert werden.
-
MaxErrorRetry
gibt die Anzahl der auf Service-Client-Ebene zulässigen Wiederholungsversuche an. Das SDK wiederholt den Vorgang mit der angegebenen Anzahl, bevor es fehlschlägt und eine Ausnahme auslöst.Der Standardwert für Ihre Anwendung kann mithilfe der
AWS_MAX_ATTEMPTS
Umgebungsvariablen oder der Einstellung max_attempts in der freigegebenen AWS Konfigurationsdatei gesteuert werden.
Detaillierte Beschreibungen dieser Eigenschaften finden Sie in der abstrakten Amazon.Runtime.ClientConfig-Klasse der AWS SDK for .NET API-Referenz zu . Jeder Wert von RetryMode
entspricht standardmäßig einem bestimmten Wert von MaxErrorRetry
, wie in der folgenden Tabelle gezeigt.
RetryMode | Corresponding MaxErrorRetry (Amazon DynamoDB) | Corresponding MaxErrorRetry (all others) |
---|---|---|
Legacy | 10 | 4 |
Standard | 10 | 2 |
Adaptive (experimental) | 10 | 2 |
Behavior
Wenn Ihre Anwendung gestartet wird
Wenn Ihre Anwendung gestartet wird, MaxErrorRetry
werden die Standardwerte für RetryMode
und vom SDK konfiguriert. Diese Standardwerte werden verwendet, wenn Sie einen Service-Client erstellen, es sei denn, Sie geben andere Werte an.
-
Wenn die Eigenschaften in Ihrer Umgebung nicht festgelegt sind,
RetryMode
ist der Standardwert für als Legacy und der Standardwert für mit dem entsprechenden Wert aus der vorherigen TabelleMaxErrorRetry
konfiguriert. -
Wenn der Wiederholungsmodus in Ihrer Umgebung festgelegt wurde, wird dieser Wert als Standard für verwendet
RetryMode
. Der Standardwert fürMaxErrorRetry
wird mit dem entsprechenden Wert aus der vorherigen Tabelle konfiguriert, es sei denn, der Wert für maximale Fehler wurde auch in Ihrer Umgebung festgelegt (als Nächstes beschrieben). -
Wenn der Wert für maximale Fehler in Ihrer Umgebung festgelegt wurde, wird dieser Wert als Standard für verwendet
MaxErrorRetry
. Amazon DynamoDB ist die Ausnahme von dieser Regel. Der standardmäßige DynamoDB-Wert fürMaxErrorRetry
ist immer der Wert aus der vorherigen Tabelle.
Während Ihre Anwendung ausgeführt wird
Wenn Sie einen Service-Client erstellen, können Sie die Standardwerte für RetryMode
und verwendenMaxErrorRetry
, wie zuvor beschrieben, oder Sie können andere Werte angeben. Um andere Werte anzugeben, erstellen Sie ein Servicekonfigurationsobjekt wie AmazonDynamoDBConfig oder AmazonSQSConfig und fügen Sie es ein, wenn Sie den Service-Client erstellen.
Diese Werte können für einen Service-Client nicht geändert werden, nachdem er erstellt wurde.
Überlegungen
Wenn ein Wiederholungsversuch stattfindet, wird die Latenz Ihrer Anfrage erhöht. Sie sollten Ihre Wiederholversuche basierend auf den Anwendungsbeschränkungen für die Gesamtanfragenlatenz und die Fehlerraten konfigurieren.
Timeouts
Mit dem AWS SDK for .NET können Sie die Timeout-Werte für die Anforderung und das Socket-Lese-/Schreib-Timeout auf Service-Client-Ebene konfigurieren. Diese Werte werden in der Timeout
und den ReadWriteTimeout
Eigenschaften der abstrakten Amazon.Runtime.ClientConfig-Klasse angegeben. Diese Werte werden als die ReadWriteTimeout
Eigenschaften Timeout
und der HttpWebRequestTimeout
-Wert 100 Sekunden und der ReadWriteTimeout
-Wert 300 Sekunden.
Wenn Ihr Netzwerk eine hohe Latenz aufweist oder Bedingungen vorliegen, die bei einer Operation einen Wiederholversuch auslösen, kann die Verwendung der Werte für eine lange Zeitüberschreitung und einer hohen Anzahl von Wiederholversuchen dazu führen, dass einige SDK-Operationen scheinbar nicht mehr reagieren.
Anmerkung
Die Version von AWS SDK for .NET, die auf die portable Klassenbibliothek (PCL) abzielt, verwendet die -HttpClientHttpWebRequest
Klasse und unterstützt nur die Timeout
Nachstehend sind die Ausnahmen von den Standardwerten für Zeitüberschreitungen angeführt. Diese Werte werden überschrieben, wenn Sie die Werte für die Zeitüberschreitung explizit angeben.
-
Timeout
undReadWriteTimeout
werden auf die maximalen Werte gesetzt, wenn die aufgerufene Methode einen Stream hochlädt, z. B. AmazonS3Client .PutObjectAsync(), AmazonS3Client .UploadPartAsync(), AmazonGlacierClient.UploadArchiveAsync() usw. -
Die Versionen des AWS SDK for .NET, die auf .NET Framework abzielen, setzen
Timeout
undReadWriteTimeout
auf die Höchstwerte für alle AmazonS3Client- und -AmazonGlacierClientObjekte. -
Die Versionen von AWS SDK for .NET, die auf die portable Klassenbibliothek (PCL) und .NET Core abzielen,
Timeout
sind auf den Höchstwert für alle AmazonS3Client- und -AmazonGlacierClientObjekte festgelegt.
Beispiel
Das folgende Beispiel zeigt, wie Sie den Standard-Wiederholungsmodus, maximal 3 Wiederholungen, ein Timeout von 10 Sekunden und ein Timeout für Lese-/Schreibvorgänge von 10 Sekunden (falls zutreffend) angeben. Dem AmazonS3Client-Konstruktor wird ein AmazonS3Config-Objekt zugewiesen.
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 });