Wiederholungen und Timeouts - AWS SDK for .NET

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 Tabelle MaxErrorRetry konfiguriert.

  • Wenn der Wiederholungsmodus in Ihrer Umgebung festgelegt wurde, wird dieser Wert als Standard für verwendetRetryMode. Der Standardwert für MaxErrorRetry 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 verwendetMaxErrorRetry. Amazon DynamoDB ist die Ausnahme von dieser Regel. Der standardmäßige DynamoDB-Wert für MaxErrorRetry 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 HttpWebRequest Objekte übergeben, die vom AWS Service-Client-Objekt erstellt wurden. Standardmäßig beträgt der Timeout-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 -HttpClientKlasse anstelle der -HttpWebRequestKlasse 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.

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 });