Wie kann ich die Übertragungsleistung des Sync-Befehls für Amazon S3 verbessern?

Lesedauer: 4 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.

Lösung

Der Befehl sync vergleicht die Quell- und Ziel-Buckets, um festzustellen, welche Quelldateien im Ziel-Bucket nicht existieren. Der Befehl sync bestimmt auch, welche Quelldateien im Vergleich zu den Dateien im Ziel-Bucket geändert wurden. Anschließend werden die neuen oder aktualisierten Quelldateien in den Ziel-Bucket kopiert.

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 Übertragungsgröße kann sich auf die Dauer der Synchronisierung oder auf die Kosten auswirken, die Ihnen durch Anfragen an Amazon S3 entstehen.

Löschmarkierungen wirken sich auch auf die Leistung von Listen aus. Daher empfiehlt es sich, die Anzahl der Löschmarkierungen zu minimieren. Da der Sync-Befehl List-API-Aufrufe im Backend ausführt, wirken sich Löschmarkierungen auch auf die Leistung des Sync-Befehls aus.

Implementieren Sie die folgenden Methoden, um die Übertragungszeit bei der Ausführung des sync-Befehls zu verkürzen.

Ausführen mehrerer Instances des AWS CLI

Um eine große Datenmenge zu kopieren, können Sie mehrere Instances des AWS CLI ausführen, um separate Synchronisierungsvorgänge parallel auszuführen. Sie können beispielsweise parallele Synchronisationsoperationen für verschiedene Präfixe ausführen:

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

**Hinweis:**Wenn beim Ausführen von AWS-CLI-Befehlen Fehler auftreten, stellen Sie sicher, dass Sie die neueste Version von AWS CLI verwenden.

Oder Sie können parallele Synchronisationsvorgänge für separate Ausschluss- und Einschlussfilter ausführen. Beispielsweise trennen die folgenden Operationen die zu synchronisierenden Dateien nach Schlüsselnamen, die mit den Zahlen 0 bis 4 und den Zahlen 5 bis 9 beginnen:

**Hinweis:**Selbst wenn Sie die Filter exclude und include verwenden, überprüft der sync-Befehl dennoch alle Dateien im Quell-Bucket. Diese Überprüfung hilft dabei, herauszufinden, welche Quelldateien in den Ziel-Bucket kopiert werden sollen. Wenn Sie mehrere Synchronisierungsvorgänge haben, die auf unterschiedliche Schlüsselnamenpräfixe abzielen, überprüft jeder sync-Vorgang alle Quelldateien. Aufgrund der Filter Ausschließen und Einschließen werden jedoch nur die Dateien, die in den Filtern enthalten sind, in den Ziel-Bucket kopiert.

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*"

Weitere Informationen zur Optimierung der Leistung Ihres Workloads finden Sie unter Bewährte Entwurfsmuster: Optimierung der Amazon-S3-Leistung.

Änderung des AWS-CLI-Konfigurationswerts für max_concurrent_requests

Um die Leistung potenziell zu verbessern, können Sie den Wert von max_concurrent_requests ändern.Dieser Wert legt die Anzahl der Anfragen fest, die gleichzeitig an Amazon S3 gesendet werden können. Der Standardwert ist 10, und Sie können ihn auf einen höheren Wert erhöhen. Beachten Sie die folgenden Einschränkungen:

  • Das Ausführen von mehr Threads verbraucht mehr Ressourcen auf Ihrem Computer. Sie müssen sicherstellen, dass Ihr Computer über genügend Ressourcen verfügt, um die gewünschte maximale Anzahl gleichzeitiger Anforderungen zu unterstützen.
  • Zu viele gleichzeitige Anfragen könnten ein System überfordern. Dies kann zu Verbindungstimeouts führen oder die Reaktionsfähigkeit des Systems verlangsamen. Um Timeout-Probleme mit der AWS CLI zu vermeiden, können Sie versuchen, den Wert --cli-read-timeout oder den Wert --cli-connect-timeout auf 0 zu setzen.

(Optional) Überprüfung der Instance-Konfiguration

Wenn Sie eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance verwenden, um den Synchronisierungsvorgang auszuführen, verwenden Sie die folgenden bewährten Methoden:

  • Überprüfen Sie Ihren Instance-Typ. Größere Instance-Typen können bessere Ergebnisse liefern, da sie über eine hohe Bandbreite und für Amazon Elastic Block Store (Amazon EBS) optimierte Netzwerke verfügen.
  • Wenn sich die Instance in einer anderen AWS-Region als der Bucket befindet, verwenden Sie eine Instance in derselben Region. Um die Latenz zu reduzieren, reduzieren Sie die geografische Entfernung zwischen der Instance und Ihrem Amazon S3 Bucket.
  • Wenn sich die Instance in derselben Region wie der Quell-Bucket befindet, richten Sie einen Amazon Virtual Private Cloud (Amazon VPC)-Endpunkt für S3 ein. VPC-Endpunkte können zur Verbesserung der Gesamtleistung beitragen.

Ähnliche Informationen

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

Was ist der beste Weg, um große Datenmengen von einem Amazon S3 Bucket in einen anderen zu übertragen?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten