Direkt zum Inhalt

Wie verbessere ich die Datenübertragungsleistung, wenn ich den AWS CLI-Befehl „sync“ für Amazon S3 verwende?

Lesedauer: 5 Minute
0

Ich verwende den Sync-Befehl des AWS Command Line Interface (AWS CLI), um Daten auf Amazon Simple Storage Service (Amazon S3) zu übertragen. Der Abschluss der Übertragung dauert jedoch sehr lange.

Kurzbeschreibung

Die Anzahl der Objekte im Quell- und Ziel-Bucket kann sich auf die Zeit auswirken, die der Befehl sync benötigt, um den Vorgang abzuschließen. Die Größe der Übertragung kann sich auf die Dauer der Synchronisierung und die Kosten von Anfragen an Amazon S3 auswirken.

Lösung

Hinweis: Wenn du beim Ausführen von AWS CLI-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Abgelaufene Löschmarkierungen entfernen

Da der sync-Befehl List-API-Aufrufe im Backend ausführt, wirken sich Löschmarkierungen auf die Leistung des sync-Befehls aus. Es hat sich bewährt, die Anzahl der Löschmarkierungen zu minimieren. Du kannst eine S3-Lebenszykluskonfigurationsregel verwenden, um abgelaufene Löschmarkierungen in einem Bucket mit Versionsverwaltung automatisch zu entfernen.

Mehrere AWS-CLI-Operationen ausführen

Um eine große Datenmenge zu kopieren, führe separate sync-Operationen parallel aus. Der folgende Beispielbefehl führt parallele sync-Operationen für verschiedene Präfixe aus:

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder1 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder1  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder2 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder2

Oder du kannst parallele Synchronisierungsoperationen für separate Ausschluss- und Einschlussfilter ausführen. Die folgenden Beispieloperationen trennen die zu synchronisierenden Dateien nach Schlüsselnamen, die mit den Zahlen 0 bis 4 und den Zahlen 5 bis 9 beginnen:

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Hinweis: Selbst wenn du die Filter exclude (ausschließen) und include (einschließen) verwendest, überprüft der sync-Befehl dennoch alle Dateien im Quell-Bucket. Die Überprüfung identifiziert die Quelldateien, die in den Ziel-Bucket kopiert werden sollen. Wenn du mehrere Synchronisierungsoperationen für verschiedene Schlüsselnamenpräfixe hast, überprüft jede sync-Operation alle Quelldateien. Aufgrund der exclude- und include-Filter kopiert Amazon S3 jedoch nur die Dateien, die du in die Filter aufnimmst, in den Ziel-Bucket.

Weitere Informationen zur Optimierung der Leistung der Workload findest du unter Bewährte Entwurfsmuster: Optimierung der Amazon S3-Leistung.

S3 Transfer Acceleration aktivieren

Verwende S3 Transfer Acceleration, um die Übertragungsgeschwindigkeiten zu verbessern.

Um die Preise für S3 Transfer Acceleration zu überprüfen, wähle die Registerkarte Datentransfer auf der Seite Amazon S3-Preise aus. Verwende das Amazon S3 Transfer Acceleration Speed Comparison-Tool, um festzustellen, ob S3 Transfer Acceleration deine Übertragungsgeschwindigkeiten verbessert.

Hinweis: Mit S3 Transfer Acceleration kannst du die CopyObject-Aktion nicht in allen AWS-Regionen verwenden.

Änderung der AWS-CLI-Konfigurationswerte

max_concurrent_requests

Wenn du max_concurrent_requests verwendest, beträgt die Standardanzahl von Anforderungen, die du gleichzeitig an Amazon S3 senden kannst, 10. Erhöhe den Wert, um die Leistung zu verbessern.

Wichtig:

  • Wenn du mehr Threads ausführst, verbrauchst du mehr Ressourcen auf dem Computer. Stelle sicher, dass dein Computer über genügend Ressourcen verfügt, um die maximale Anzahl gleichzeitiger Anforderungen zu unterstützen.
  • Zu viele gleichzeitige Anforderungen können zu Verbindungs-Timeouts führen oder die Reaktionsfähigkeit des Systems verlangsamen. Um Timeout-Probleme mit der AWS CLI zu vermeiden, kannst du versuchen, die Option „--cli-read-timeout“ oder die Option „--cli-connect-timeout“ auf 0 zu setzen.

multipart_threshold

Wenn eine Datei den Größenschwellenwert erreicht, verwendet Amazon S3 einen mehrteiligen Upload anstelle einer einzelnen Operation. Der Standardwert für multipart_threshold ist 8 MB. Führe den folgenden Befehl aus, um den Standardwert zu erhöhen:

aws configure set default.s3.multipart_threshold 16MB

Hinweis: Ersetze 16MB durch deine mehrteilige Schwellenwertgröße.

multipart_chunksize

Der Standardwert für multipart_chunksize ist 8 MB und der Mindestwert ist 5 MB. Führe den folgenden Befehl aus, um die Chunk-Größe zu erhöhen:

aws configure set default.s3.multipart_chunksize 16MB

Hinweis: Ersetze 16MB durch deine neue Chunk-Größe.

Bei großen Objekten empfiehlt es sich, den multipart_threshold auf 100 MB festzulegen, sodass nur große Dateien mehrteilige Uploads verwenden. Es ist auch eine bewährte Methode, die multipart_chunksize auf 25 MB festzulegen, um ein Gleichgewicht zwischen effizienten Uploads und verwaltbaren Teilgrößen herzustellen.

(Optional) EC2-Instance-Konfiguration überprüfen

Wenn du sync von einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance aus ausführst, verwende die folgenden bewährten Methoden, um die Leistung zu verbessern:

  • Verwende einen größeren EC2-Instance-Typ mit besserem Netzwerkdurchsatz und besseren CPU-Ressourcen, um die Datenübertragungsraten zu beschleunigen.
  • Platziere die Instance in derselben Region wie dein Bucket, um die Netzwerklatenz zu reduzieren.
  • Verwende einen Amazon Virtual Private Cloud (Amazon VPC)-Gateway-Endpunkt, um den Datenverkehr innerhalb des AWS-Netzwerks weiterzuleiten und so die Leistung und Sicherheit zu verbessern.
    Hinweis: Du kannst diese Konfiguration nur verwenden, wenn deine Instance dieselbe Region wie dein Bucket hat.
  • Verwende Amazon Elastic Block Store (Amazon EBS)-optimierte Instances und wähle EBS-Volume-Typen aus, die hohe IOPS und hohen Durchsatz bieten, z. B. gp3- oder io2-Volumes. Dies hilft, I/O-Konflikte und Latenz zu reduzieren, wenn du mit lokalen Daten arbeitest, bevor du sie an Amazon S3 überträgst.
  • Wähle Instances aus, die Enhanced Networking unterstützen, um eine höhere Leistung von Paketen pro Sekunde (PPS) und eine geringere Latenz zu erzielen.
  • Wenn dein Workload von größeren TCP-Paketen profitiert, aktiviere Jumbo Frames (MTU 9001).

Ähnliche Informationen

Wie kann ich die Übertragungsgeschwindigkeiten beim Kopieren von Daten zwischen meinem S3-Bucket und meiner EC2-Instance verbessern?

Wie übertrage ich große Datenmengen von einem Amazon S3-Bucket in einen anderen?

Wie behebe ich langsame oder wechselhafte Geschwindigkeiten, wenn ich Daten von einem On-Premise-Client zu Amazon S3 herunterlade oder hochlade?