Timeouts und Wiederholungsversuche für latenzsensitive Anwendungen
Es gibt bestimmte Situationen, in denen eine Anwendung eine Antwort von Amazon S3 erhält, die darauf hinweist, dass ein Wiederholungsversuch erforderlich ist. Amazon S3 ordnet Bucket- und Objektnamen den damit verbundenen Objektdaten zu. Wenn eine Anwendung hohe Anforderungsraten generiert (typischerweise dauerhaft über 5.000 Anforderungen pro Sekunde für eine kleine Zahl von Objekten), erhält sie möglicherweise HTTP 503 Slowdown-Antworten. Wenn solche Fehler auftreten, implementiert jedes AWS SDK eine automatische Wiederholungsversuchlogik mit exponentiellem Backoff. Wenn Sie kein AWS SDK verwenden, sollten Sie eine Wiederholungsversuchlogik implementieren, wenn Sie den HTTP-Fehler 503 erhalten. Weitere Informationen finden Sie unter Wiederholversuche bei Fehlern und exponentielles Backoff in AWS in der Allgemeinen Amazon Web Services-Referenz.
Amazon S3 wird automatisch in Reaktion auf andauernde neue Anforderungsraten skaliert und optimiert so die Leistung in dynamischer Weise. Während Amazon S3 Optimierungen für eine neue Anforderungsrate durchführt, erhalten Sie temporär HTTP 503-Anforderungsantworten, bis die Optimierung abgeschlossen ist. Nachdem Amazon S3 die Leistung intern für die neue Anfragerate optimiert hat, werden alle Anfragen generell ohne Wiederholungsversuche bereitgestellt.
Für latenzsensitive Anwendungen empfiehlt Amazon S3 Nachverfolgung und aggressive Wiederholungsversuche bei langsameren Operationen. Wenn Sie eine Anfrage wiederholen, empfehlen wir die Verwendung einer neuen Verbindung mit Amazon S3 und die Durchführung eines neuen DNS-Lookup-Vorgangs.
Wenn Sie sehr große Anforderungen unterschiedlicher Größe (beispielsweise mit mehr als 128 MB) durchführen, sollten Sie den erreichten Durchsatz nachverfolgen und für die langsamsten 5 Prozent der Anforderungen Wiederholungsversuche durchführen. Wenn Sie kleinere Anforderungen (etwa unter 512 KB) durchführen, bei denen die mittleren Latenzen oft im zweistelligen Millisekundenbereich liegen, ist es sinnvoll, nach zwei Sekunden eine GET- oder PUT-Operation zu wiederholen. Wenn weitere Wiederholungsversuche erforderlich sind, ist ein Backoff die beste Lösung. So empfehlen wir beispielsweise die Ausgabe eines Wiederholungsversuchs nach zwei Sekunden und eines zweiten Versuchs nach weiteren vier Sekunden.
Wenn Ihre Anwendung Anfragen mit fester Größe an Amazon S3 sendet, sollten Sie konsistentere Reaktionszeiten für diese einzelnen Anfragen erwarten. In diesem Fall ist es eine einfache Strategie, das langsamste Prozent der Anforderungen zu identifizieren und diese zu wiederholen. Selbst ein einziger Wiederholungsversuch ist oft erfolgreich für die Reduzierung der Latenz.
Wenn Sie AWS Key Management Service (AWS KMS) für die serverseitige Verschlüsselung verwenden, vgl. Kontingente im AWS Key Management Service-Entwicklerhandbuch für Informationen zu den Anforderungsraten, die für Ihren Anwendungsfall unterstützt werden.