Version 4 (V4) von SDK for .NET ist in der Vorschauversion! Informationen zu dieser neuen Version in der Vorschauversion finden Sie im Entwicklerhandbuch AWS SDK for .NET (Vorschauversion von Version 4).
Bitte beachten Sie, dass sich Version 4 des SDK in der Vorschauversion befindet und sich sein Inhalt daher ändern kann.
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
AWS SDK for .NET Damit können Sie die Anzahl der Wiederholungen und die Timeout-Werte für HTTP-Anfragen an Dienste konfigurieren. AWS 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 sollen die AWS SDK for .NET und Ihre Anwendung reagieren, wenn sich die Netzwerkkonnektivität verschlechtert oder ein AWS Dienst 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 oder an einem Remote-Standort mit unzuverlässiger Konnektivität bereitgestellt?
Wiederholversuche
Übersicht
Sie AWS SDK for .NET können Anfragen wiederholen, die aufgrund serverseitiger Drosselung oder Verbindungsabbrüche fehlschlagen. Es gibt zwei Eigenschaften von Dienstkonfigurationsklassen, mit denen Sie das Wiederholungsverhalten eines Dienstclients angeben können. Servicekonfigurationsklassen erben diese Eigenschaften von der abstrakten Amazon.Runtime. ClientConfigKlasse der API-Referenz:AWS SDK for .NET
-
RetryMode
gibt einen von drei Wiederholungsmodi an, die in der Amazon.Runtime definiert sind. RequestRetryModeAufzählung.Der Standardwert für Ihre Anwendung kann mithilfe der
AWS_RETRY_MODE
Umgebungsvariablen oder der Einstellung retry_mode in der gemeinsam genutzten Konfigurationsdatei gesteuert werden. AWS
-
MaxErrorRetry
gibt die Anzahl der auf Service-Client-Ebene zulässigen Wiederholungen an. Das SDK wiederholt den Vorgang so oft, bis ein Fehler auftritt und eine Ausnahme ausgelöst wird.Der Standardwert für Ihre Anwendung kann mithilfe der
AWS_MAX_ATTEMPTS
Umgebungsvariablen oder der Einstellung max_attempts in der gemeinsam genutzten Konfigurationsdatei gesteuert werden. AWS
Detaillierte Beschreibungen dieser Eigenschaften finden Sie in der Zusammenfassung Amazon.Runtime. ClientConfigKlasse der AWS SDK for .NET API-Referenz. Jeder Wert von RetryMode
entspricht standardmäßig einem bestimmten Wert vonMaxErrorRetry
, wie in der folgenden Tabelle dargestellt.
RetryMode | Entsprechend MaxErrorRetry (Amazon DynamoDB) | Entspricht MaxErrorRetry (alle anderen) |
---|---|---|
Veraltet | 10 | 4 |
Standard | 10 | 2 |
Adaptiv (experimentell) | 10 | 2 |
Behavior
Wenn Ihre Anwendung gestartet wird
Wenn Ihre Anwendung gestartet wird, MaxErrorRetry
werden Standardwerte für RetryMode
und vom SDK konfiguriert. Diese Standardwerte werden verwendet, wenn Sie einen Service-Client erstellen, sofern Sie keine anderen Werte angeben.
-
Wenn die Eigenschaften in Ihrer Umgebung nicht festgelegt sind,
RetryMode
ist der Standard für als Legacy konfiguriert und der Standard fürMaxErrorRetry
wird mit dem entsprechenden Wert aus der vorherigen Tabelle konfiguriert. -
Wenn der Wiederholungsmodus in Ihrer Umgebung festgelegt wurde, wird dieser Wert als Standard für
RetryMode
verwendet. Der Standardwert fürMaxErrorRetry
ist mit dem entsprechenden Wert aus der vorherigen Tabelle konfiguriert, es sei denn, der Wert für die maximale Anzahl von Fehlern wurde auch in Ihrer Umgebung festgelegt (siehe unten). -
Wenn der Wert für die maximale Anzahl von Fehlern in Ihrer Umgebung festgelegt wurde, wird dieser Wert als Standard für verwendet
MaxErrorRetry
. Amazon DynamoDB ist die Ausnahme von dieser Regel. Der DynamoDB-Standardwert 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 bereits beschrieben, oder Sie können andere Werte angeben. Um andere Werte anzugeben, erstellen Sie ein Servicekonfigurationsobjekt wie AmazonDynamoDBConfigAmazon und fügen Sie es SQSConfig hinzu, wenn Sie den Service-Client erstellen.
Diese Werte können für einen Service-Client nicht mehr geändert werden, nachdem er erstellt wurde.
Überlegungen
Wenn ein erneuter Versuch erfolgt, erhöht sich die Latenz Ihrer Anfrage. Sie sollten Ihre Wiederholversuche basierend auf den Anwendungsbeschränkungen für die Gesamtanfragenlatenz und die Fehlerraten konfigurieren.
Timeouts
Auf diese AWS SDK for .NET Weise können Sie die Werte für das Anforderungs-Timeout und das Socket-Timeout für Lese-/Schreibvorgänge auf Service-Client-Ebene konfigurieren. Diese Werte sind in der Timeout
und den ReadWriteTimeout
Eigenschaften der abstrakten Amazon.Runtime angegeben. ClientConfigKlasse. Diese Werte werden als 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 Class Library (PCL) abzielt, verwendet die HttpClientHttpWebRequest
Klasse und unterstützt nur die Timeout-Eigenschaft
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 Maximalwerte gesetzt, wenn die aufgerufene Methode einen Stream hochlädt, z. B. AmazonS3Client. PutObjectAsync(), AmazonS3Client. UploadPartAsync(),. AmazonGlacierClient UploadArchiveAsync() und so weiter. -
Die Versionen des AWS SDK for .NET Ziel-.NET Frameworks haben die Maximalwerte für alle AmazonS3Client
Timeout
undReadWriteTimeout
Objekte festgelegt. AmazonGlacierClient -
Die Versionen von AWS SDK for .NET , die auf die Portable Class Library (PCL) und .NET Core abzielen, sind
Timeout
auf den Maximalwert für alle AmazonS3Client und Objekte eingestellt. AmazonGlacierClient
Beispiel
Das folgende Beispiel zeigt Ihnen, wie Sie den Standard-Wiederholungsmodus, maximal 3 Wiederholungen, ein Timeout von 10 Sekunden und ein Lese-/Schreib-Timeout 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 SDK for .NET that target .NET Core.
ReadWriteTimeout = TimeSpan.FromSeconds(10),
RetryMode = RequestRetryMode.Standard,
MaxErrorRetry = 3
});