Come faccio a migliorare le prestazioni di trasferimento del comando di sincronizzazione per Amazon S3?

4 minuti di lettura
0

Sto utilizzando il comando di sincronizzazione Interfaccia della linea di comando AWS (AWS CLI) per trasferire dati su Amazon Simple Storage Service (Amazon S3). Tuttavia, il completamento del trasferimento richiede molto tempo.

Risoluzione

Il comando sync confronta i bucket di origine e destinazione per determinare quali file di origine non esistono nel bucket di destinazione. Il comando sync determina anche quali file di origine sono stati modificati rispetto ai file nel bucket di destinazione. Quindi, copia i file di origine nuovi o aggiornati nel bucket di destinazione.

Il numero di oggetti nel bucket di origine e destinazione può influire sul tempo impiegato dal comando sync per completare il processo. Le dimensioni del trasferimento possono influire sulla durata della sincronizzazione o sul costo sostenuto dalle richieste ad Amazon S3.

I marker di eliminazione influiscono anche sulle prestazioni degli elenchi, quindi è consigliabile ridurre al minimo il numero di marker di eliminazione. Poiché il comando sync esegue le chiamate alla lista API sul retro, anche i marker di eliminazione influiscono sulle prestazioni del comando sync.

Per migliorare i tempi di trasferimento quando esegui il comando sync, implementa le seguenti pratiche.

Esegui più istanze dell'interfaccia della linea di comando AWS

Per copiare una grande quantità di dati, puoi eseguire più istanze dell'interfaccia della linea di comando AWS per eseguire operazioni di sincronizzazione separate in parallelo. Ad esempio, puoi eseguire operazioni di sincronizzazione parallele per diversi prefissi:

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

Nota: Se ricevi messaggi di errore durante l'esecuzione dei comandi AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

In alternativa, puoi eseguire operazioni di sincronizzazione parallela per filtri di esclusione e inclusione separati. Ad esempio, le seguenti operazioni separano i file da sincronizzare in base ai nomi delle chiavi che iniziano con i numeri da 0 a 4 e i numeri da 5 a 9:

Nota: Anche quando si utilizzano i filtri di esclusione e inclusione, il comando sync controlla comunque tutti i file nel bucket di origine. Questa recensione aiuta a identificare quali file di origine devono essere copiati nel bucket di destinazione. Se hai più operazioni di sincronizzazione che hanno come obiettivo prefissi di nomi chiave diversi, ogni operazione di sync esamina tutti i file di origine. Tuttavia, a causa dei filtri di esclusione e inclusione, solo i file inclusi nei filtri vengono copiati nel bucket di destinazione.

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

Per ulteriori informazioni sull'ottimizzazione delle prestazioni del carico di lavoro, consulta Best practices design patterns: optimizing Amazon S3 performance.

Modificare il valore di configurazione AWS CLI per max_concurrent_requests

Per migliorare potenzialmente le prestazioni, puoi modificare il valore di max_concurrent_requests. Questo valore imposta il numero di richieste che possono essere inviate ad Amazon S3 per volta. Il valore predefinito è 10 ed è possibile aumentarlo a un valore superiore. Da notare le seguenti limitazioni:

  • L'esecuzione di più thread consuma più risorse sul computer. Devi assicurarti che il tuo computer disponga delle risorse sufficienti per supportare il numero massimo delle richieste simultanee che desideri.
  • Troppe richieste simultanee potrebbero sovraccaricare un sistema. Ciò potrebbe causare interruzioni della connessione o rallentare la reattività del sistema. Per evitare problemi di timeout dall'interfaccia del AWS CLI, puoi provare a impostare il valore --cli-read-timeout o il valore --cli-connect-timeout su 0.

(Facoltativo) Verifica la configurazione dell'istanza

Se utilizzi un'istanza Amazon Elastic Compute Cloud (Amazon EC2) per eseguire l'operazione di sincronizzazione, scegli le seguenti migliori pratiche:

  • Verifica il tuo tipo di istanza. I tipi di istanze più grandi possono fornire risultati migliori, poiché dispongono di una larghezza di banda elevata e di reti ottimizzate per Amazon Elastic Block Store (Amazon EBS).
  • Se l'istanza si trova in una regione AWS diversa da quella del bucket, usa un'istanza nella stessa regione. Per ridurre la latenza, riduci la distanza geografica tra l'istanza e il bucket Amazon S3.
  • Se l'istanza si trova nella stessa regione del bucket di origine, configura un endpoint Amazon Virtual Private Cloud (Amazon VPC) per S3. Gli endpoint VPC possono contribuire a migliorare le prestazioni complessive.

Informazioni correlate

How can I improve the transfer speeds for copying data between my S3 bucket and EC2 instance?

What's the best way to transfer large amounts of data from one Amazon S3 bucket to another?

AWS UFFICIALE
AWS UFFICIALEAggiornata 8 mesi fa