Version 4 (V4) von AWS SDK für .NET wurde veröffentlicht!
Informationen zu wichtigen Änderungen und zur Migration Ihrer Anwendungen finden Sie im Thema https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html Migration.
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 für .NET Mit dem 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 sollten die AWS SDK für .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 niedriger Latenz bereitgestellt oder wird sie an einem entfernten Standort mit unzuverlässiger Konnektivität bereitgestellt?
Die Einstellungen für Wiederholungsversuche und Timeout wirken sich auf die wahrgenommene Leistung Ihrer Anwendung aus. Verwandte Empfehlungen finden Sie unter. Bewährte Methoden zur Leistungssteigerung
Erneute Versuche
-Übersicht
Sie AWS SDK für .NET können Anfragen, die aufgrund einer serverseitigen Drosselung oder unterbrochener Verbindungen fehlschlagen, erneut versuchen. Es gibt zwei Eigenschaften von Dienstkonfigurationsklassen, mit denen Sie das Wiederholungsverhalten eines Service-Clients angeben können. Dienstkonfigurationsklassen erben diese Eigenschaften von der abstrakten Amazon.Runtime.ClientConfig Klasse der AWS SDK für .NET API-Referenz:
-
RetryModegibt einen von drei Wiederholungsmodi an, die in der Enumeration definiert sind. Amazon.Runtime.RequestRetryModeDer Standardwert für Ihre Anwendung kann mithilfe der
AWS_RETRY_MODEUmgebungsvariablen oder der Einstellung retry_mode in der gemeinsam genutzten Konfigurationsdatei gesteuert werden. AWS
-
MaxErrorRetrygibt die Anzahl der zulässigen Wiederholungen auf der Service-Client-Ebene an. Das SDK wiederholt den Vorgang so oft wie angegeben, bevor er fehlschlägt und eine Ausnahme auslöst.Der Standardwert für Ihre Anwendung kann mithilfe der
AWS_MAX_ATTEMPTSUmgebungsvariablen oder der Einstellung max_attempts in der gemeinsam genutzten Konfigurationsdatei gesteuert werden. AWS
Detaillierte Beschreibungen dieser Eigenschaften finden Sie in der abstrakten Amazon.Runtime.ClientConfig Klasse der AWS SDK für .NET API-Referenz. Jeder Wert von RetryMode entspricht standardmäßig einem bestimmten Wert vonMaxErrorRetry, wie in der folgenden Tabelle dargestellt.
| RetryMode | Entspricht MaxErrorRetry (Amazon DynamoDB) | Entspricht MaxErrorRetry (alle anderen) |
|---|---|---|
| Veraltet | 10 | 4 |
| Standard | 10 | 2 |
| Adaptiv (experimentell) | 10 | 2 |
Behavior
Wenn Ihre Bewerbung startet
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, sofern Sie keine anderen Werte angeben.
-
Wenn die Eigenschaften in Ihrer Umgebung nicht festgelegt sind,
RetryModewird das Standardformat für als Legacy konfiguriert, und das Standardformat fürMaxErrorRetrywird mit dem entsprechenden Wert aus der vorherigen Tabelle konfiguriert. -
Wenn der Wiederholungsmodus in Ihrer Umgebung festgelegt wurde, wird dieser Wert als Standardwert für
RetryModeverwendet. Der Standardwert fürMaxErrorRetrywird mit dem entsprechenden Wert aus der vorherigen Tabelle konfiguriert, es sei denn, der Wert für die maximale Fehleranzahl wurde ebenfalls in Ihrer Umgebung festgelegt (siehe unten). -
Wenn der Wert für die maximale Fehleranzahl in Ihrer Umgebung festgelegt wurde, wird dieser Wert als Standardwert für verwendet
MaxErrorRetry. Amazon DynamoDB ist die Ausnahme von dieser Regel; der DynamoDB-Standardwert fürMaxErrorRetryist immer der Wert aus der vorherigen Tabelle.
Während Ihre Anwendung ausgeführt wird
Wenn Sie einen Service Client erstellen, können Sie, wie zuvor beschriebenMaxErrorRetry, die Standardwerte für RetryMode und verwenden, oder Sie können andere Werte angeben. Um andere Werte anzugeben, erstellen Sie ein Dienstkonfigurationsobjekt wie AmazonDynamoDBConfig AmazonSQSConfig und schließen Sie es ein, 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
AWS SDK für .NET Mit dem können Sie Anforderungs-Timeouts auf Service-Client-Ebene und pro Methodenaufruf konfigurieren. Es gibt zwei Mechanismen zum Konfigurieren von Timeouts, die in den nachfolgenden Abschnitten behandelt werden:
-
Wenn Sie asynchrone Aufrufe verwenden, können Sie den
CancellationTokenParameter der Methode verwenden. -
Wenn Sie synchrone Aufrufe in.NET Framework verwenden, können Sie die
ReadWriteTimeoutEigenschaftenTimeoutund der abstrakten Klasse verwenden. Amazon.Runtime.ClientConfig
Verwenden des CancellationToken Parameters für Timeouts
AWS SDK für .NET Mit dem können Sie Anforderungs-Timeouts bei asynchronen Aufrufen mithilfe des Parameters konfigurieren. CancellationToken Der folgende Codeausschnitt zeigt ein Beispiel. Der Code wird ausgelöst, System.Threading.Tasks.TaskCanceledException wenn die Anfrage nicht innerhalb von 10 Sekunden abgeschlossen ist.
string bucketName = "amzn-s3-demo-bucket"; string path = "pathToBucket"; using (var amazonS3Client = new AmazonS3Client(new AmazonS3Config())) { // Cancel request after 10 seconds CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMilliseconds(10000)); CancellationToken cancellationToken = cancellationTokenSource.Token; ListObjectsV2Request listRequestV2 = new() { BucketName = bucketName, Prefix = path, }; ListObjectsV2Response listResponseV2 = await amazonS3Client.ListObjectsV2Async(listRequestV2, cancellationToken); }
Verwenden des Timeouts und der ReadWriteTimeout Eigenschaften für Timeouts
Anmerkung
Die Timeout Eigenschaft wirkt sich nicht auf asynchrone Aufrufe aus. Wenn Sie asynchrone Aufrufe verwenden, lesen Sie stattdessen nach. Verwenden des CancellationToken Parameters für Timeouts
AWS SDK für .NET Mit dem können Sie die Werte für das Anforderungs-Timeout und das read/write Socket-Timeout auf der Service-Client-Ebene konfigurieren. Diese Werte werden in den Timeout und den ReadWriteTimeout Eigenschaften der abstrakten Amazon.Runtime.ClientConfig Klasse angegeben. Diese Werte werden als ReadWriteTimeout Eigenschaften Timeout und der HttpWebRequest 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 für .NET , die auf die portable Klassenbibliothek (PCL) abzielt, verwendet die HttpClient HttpWebRequest Klasse und unterstützt nur die https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient.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.
-
TimeoutundReadWriteTimeoutwerden auf die Maximalwerte gesetzt, wenn die aufgerufene Methode einen Stream hochlädt, wie z. B. AmazonS3Client.PutObjectAsync (), AmazonS3Client.UploadPartAsync (), AmazonGlacierClient.UploadArchiveAsync () usw. -
Die Versionen des AWS SDK für .NET Ziels.NET Framework-Sets
TimeoutundReadWriteTimeoutauf die Maximalwerte für alle AmazonS3Client- und -Objekte. AmazonGlacierClient -
Die Versionen von AWS SDK für .NET , die auf die portable Klassenbibliothek (PCL) und .NET Core abzielen, sind
Timeoutauf den Maximalwert für alle AmazonS3Client und Objekte festgelegt. AmazonGlacierClient
Das folgende Beispiel zeigt, wie Sie den Standard-Wiederholungsmodus, maximal 3 Wiederholungen, einen Timeout von 10 Sekunden und einen read/write Timeout von 10 Sekunden (falls zutreffend) angeben. Der AmazonS3Client-Konstruktor erhält ein AmazonS3Config-Objekt. https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Config.html
var s3Client = new AmazonS3Client( new AmazonS3Config { Timeout = TimeSpan.FromSeconds(10), // NOTE: The following property is obsolete for // versions of the AWS SDK für .NET that target .NET Core. ReadWriteTimeout = TimeSpan.FromSeconds(10), RetryMode = RequestRetryMode.Standard, MaxErrorRetry = 3 });