Salta al contenuto

Come posso migliorare le prestazioni di trasferimento dei dati quando utilizzo il comando sync di AWS CLI per Amazon S3?

6 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.

Breve descrizione

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

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori relativi ad AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Rimuovi i contrassegni di eliminazione scaduti

Poiché il comando sync esegue chiamate API di elencazione sul backend, anche i contrassegni di eliminazione influiscono sulle prestazioni del comando sync. È consigliabile ridurre al minimo il numero di contrassegni di eliminazione. Puoi utilizzare una regola di configurazione del ciclo di vita S3 per rimuovere automaticamente i contrassegni di eliminazione scaduti in un bucket con controllo delle versioni attivato.

Esegui più operazioni in AWS CLI

Per copiare una grande quantità di dati, esegui operazioni sync separate in parallelo. Il seguente esempio di comando esegue operazioni sync 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

In alternativa, puoi eseguire operazioni sync parallele con filtri di esclusione e inclusione separati. I seguenti esempi di 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:

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

Nota: anche quando utilizzi filtri di esclusione e inclusione, il comando sync controlla tutti i file nel bucket di origine. Il controllo identifica i file di origine da copiare nel bucket di destinazione. Se esegui più operazioni sync con diversi prefissi dei nomi delle chiavi, ogni operazione sync controlla tutti i file di origine. Tuttavia, avendo impostato filtri di esclusione e inclusione, Amazon S3 copia nel bucket di destinazione solo i file che includi nei filtri.

Per ulteriori informazioni sull'ottimizzazione delle prestazioni del carico di lavoro, consulta Best practice e modelli di progettazione: ottimizzazione delle prestazioni di Amazon S3.

Attiva Accelerazione del trasferimento S3

Utilizza Accelerazione del trasferimento S3 per migliorare la velocità di trasferimento.

Per esaminare i prezzi di Accelerazione del trasferimento S3, scegli la scheda Trasferimento dati nella pagina Prezzi di Amazon S3. Per stabilire se Accelerazione del trasferimento S3 effettivamente migliora la velocità di trasferimento, utilizza lo strumento Speed Comparison di Accelerazione del trasferimento Amazon S3.

Nota: con Accelerazione del trasferimento S3, non puoi utilizzare l'azione CopyObject nelle Regioni AWS.

Modifica i valori di configurazione di AWS CLI

max_concurrent_requests

Quando utilizzi max_concurrent_requests, il numero predefinito di richieste che puoi inviare contemporaneamente ad Amazon S3 è 10. Per migliorare le prestazioni, aumenta il valore.

Importante:

  • Quando esegui più thread, utilizzi più risorse del computer. Assicurati che il computer abbia risorse sufficienti per supportare il numero massimo di richieste simultanee.
  • Troppe richieste concorrenti potrebbero causare timeout di connessione o rallentare la reattività del sistema. Per evitare problemi di timeout di AWS CLI, puoi provare a impostare --cli-read-timeout o --cli-connect-timeout su 0.

multipart_threshold

Quando un file raggiunge la soglia di dimensioni, Amazon S3 utilizza un caricamento in più parti anziché una singola operazione. Il valore predefinito per multipart_threshold è 8 MB. Per aumentare il valore predefinito, esegui questo comando:

aws configure set default.s3.multipart_threshold 16MB

Nota: sostituisci 16 MB con la soglia desiderata per i caricamenti in più parti.

multipart_chunksize

Il valore predefinito per multipart_chunksize è 8 MB, mentre il valore minimo è 5 MB. Per aumentare la dimensione del blocco, esegui questo comando:

aws configure set default.s3.multipart_chunksize 16MB

Nota: sostituisci 16 MB con la nuova dimensione del blocco desiderata.

Per oggetti di grandi dimensioni, è consigliabile impostare multipart_threshold su 100 MB in modo che solo i file di grandi dimensioni utilizzino i caricamenti in più parti. È inoltre consigliabile impostare multipart_chunksize su 25 MB in modo da bilanciare tra l'efficienza dei caricamenti e la gestitibilità delle dimensioni delle parti.

(Facoltativo) Verifica la configurazione dell'istanza Amazon EC2

Se esegui sync da un'istanza Amazon Elastic Compute Cloud (Amazon EC2), utilizza le seguenti best practice per migliorare le prestazioni:

  • Utilizza un tipo di istanza EC2 più grande con un throughput di rete e risorse CPU migliori per accelerare le velocità di trasferimento dei dati.
  • Posiziona l'istanza nella stessa Regione del bucket per ridurre la latenza di rete.
  • Utilizza un endpoint Amazon Virtual Private Cloud (Amazon VPC) gateway per indirizzare il traffico all'interno della rete AWS e migliorare le prestazioni e la sicurezza.
    Nota: puoi utilizzare questa configurazione solo se l'istanza è la stessa Regione del bucket.
  • Utilizza istanze ottimizzate per Amazon Elastic Block Store (Amazon EBS) e scegli tipi di volume EBS che offrono IOPS e throughput elevati, come i volumi gp3 o io2. Questo aiuta a ridurre i conflitti di I/O e la latenza quando lavori con dati locali prima di trasferirli in Amazon S3.
  • Scegli istanze che supportano le reti avanzate per prestazioni più elevate in termini di pacchetti al secondo (PPS) e una latenza inferiore.
  • Se il carico di lavoro trae vantaggio da pacchetti TCP più grandi, attiva i frame jumbo (MTU 9001).

Informazioni correlate

How can I improve the transfer speeds for copying data between my S3 bucket and EC2 instance? (Come posso migliorare la velocità di trasferimento per la copia dei dati tra il mio bucket S3 e la mia istanza EC2?)

Come posso trasferire grandi quantità di dati da un bucket Amazon S3 a un altro?

Come posso risolvere i problemi di lentezza o velocità incostante quando scarico o carico dati su Amazon S3 da un client on-premises?