Linee guida sulle prestazioni per Amazon S3 - Amazon Simple Storage Service

Linee guida sulle prestazioni per Amazon S3

Per sviluppare applicazioni che caricano e recuperano oggetti da Amazon S3, segui le nostre linee guida sulle best practice per ottimizzare le prestazioni. Offriamo anche più dettagliat Schemi di progettazione delle prestazioni.

Per ottenere prestazioni ottimali per le applicazioni su Amazon S3, consigliamo di adottare le linee guida seguenti.

Misura le prestazioni

Quando ottimizzi le prestazioni, devi verificare i requisiti che riguardano il throughput della rete, la CPU e la DRAM. A seconda della combinazione di esigenze per queste risorse diverse, può essere utile valutare più tipi di istanza Amazon EC2. Per informazioni sui tipi di istanza disponibili, consulta Tipi di istanza nella Guida per l'utente di Amazon EC2 per istanze Linux.

Durante la misurazione delle prestazioni, è utile anche verificare i tempi, la latenza e la velocità del trasferimento dei dati DNS utilizzando strumenti di analisi HTTP.

Scala le connessioni di storage orizzontalmente

Distribuire le richieste su più connessioni è uno schema di progettazione comune per scalare orizzontalmente le prestazioni. Se devi creare applicazioni ad alte prestazioni, pensa ad Amazon S3 come un sistema distribuito di dimensioni molto grandi, non un singolo endpoint di rete come un server di storage tradizionale. Puoi ottenere prestazioni ottimali inviando più richieste simultanee ad Amazon S3. Distribuisci queste richieste su connessioni separate per massimizzare la larghezza di banda accessibile da Amazon S3. Amazon S3 non impone limiti al numero di connessioni effettuate al bucket.

Utilizza i fetches Byte-Range

Utilizzando l'intestazione HTTP Range in una richiesta GET Object, puoi recuperare un intervallo di byte da un oggetto, trasferendo solo la parte specificata. Puoi utilizzare connessioni simultanee ad Amazon S3 per recuperare diversi intervalli di byte all'interno dello stesso oggetto. Questa operazione ti permette di ottenere un throughput aggregato superiore rispetto a una singola richiesta whole-object. Recuperare range minori da oggetti più grandi permette inoltre alla tua applicazione di migliorare i tempi di ripetizione quando le richieste sono interrotte. Per ulteriori informazioni, consulta Download di un oggetto.

Le dimensioni tipiche per le richieste byte-range sono di 8 o 16 MB. Se gli oggetti sono oggetti PUT che utilizzano un caricamento in più parti, è buona pratica trasformarli in oggetti GET nelle stesse dimensioni della parte (o almeno allineati ai limiti della parte) per ottenere le prestazioni migliori. Le richieste GET possono rivolgersi direttamente alle singole parti; ad esempio, GET ?partNumber=N.

Riprova le richieste per le applicazioni sensibili alla latenza

I timeout e i tentativi aggressivi aiutano a mantenere la latenza uniforme. Poiché Amazon S3 opera su vasta scala, se la prima richiesta è lenta, un nuovo tentativo di richiesta adotterà un percorso diverso e riuscirà rapidamente. Gli SDK AWS hanno valori di timeout e tentativo configurabili che puoi regolare in base alle tolleranze della tua applicazione.

Combina Amazon S3 (archiviazione) e Amazon EC2 (calcolo) nella stessa Regione AWS

Sebbene i nomi dei bucket S3 siano univoci a livello globale, ogni bucket viene archiviato in una regione che sceglierai durante la creazione del bucket stesso. Per ottimizzare le prestazioni, consigliamo di accedere al bucket dalle istanze Amazon EC2 nella stessa Regione AWS, se possibile. Questa operazione permette di ridurre la latenza e i costi di trasferimento dei dati.

Per ulteriori informazioni sui costi dl trasferimento dei dati, consulta Prezzi di Amazon S3.

Utilizza Amazon S3 Transfer Acceleration per ridurre al minimo la latenza causata dalla distanza

Configurazione di trasferimenti veloci e sicuri di file con Amazon S3 Transfer Acceleration gestisce trasferimenti di file veloci, facili e sicuri su vaste distanze geografiche tra il client e un bucket S3. Transfer Acceleration sfrutta le edge location distribuite a livello globale in Amazon CloudFront. Quando arrivano in una edge location, i dati vengono instradati ad Amazon S3 attraverso un percorso di rete ottimizzato. Transfer Acceleration è ideale per il trasferimento regolare di gigabyte e terabyte di dati sui diversi continenti. È inoltre utile per i clienti che effettuano il caricamento in un bucket centralizzato da tutto il mondo.

Puoi utilizzare lo strumento Speed Comparison di Amazon S3 Transfer Acceleration per confrontare le velocità di caricamento accelerate e non accelerate tra regioni Amazon S3. Questo strumento utilizza caricamenti in più parti per trasferire un file dal browser in uso a diverse regioni Amazon S3 con e senza l'utilizzo di Amazon S3 Transfer Acceleration.

Utilizzo della versione più recente degli SDK AWS

Gli SDK AWS offrono supporto integrato per molte delle linee guida consigliate per l'ottimizzazione delle prestazioni di Amazon S3. Gli SDK offrono un'API più semplice per utilizzare al meglio Amazon S3 internamente a un'applicazione e vengono aggiornati regolarmente in modo da seguire le best practice più recenti. Ad esempio, gli SDK includono la logica per riprovare automaticamente le richieste sugli errori HTTP 503 e investono in codice per rispondere e adattarsi a connessioni lente.

Gli SDK forniscono anche lo strumento TransferManager, che automatizza connessioni con dimensionamento orizzontale in modo da raggiungere migliaia di richieste al secondo, usando richieste di intervalli di byte laddove appropriato. È importante utilizzare la versione più recente degli SDK AWS per ottenere le funzionalità di ottimizzazione delle prestazioni più recenti.

Puoi inoltre ottimizzare le prestazioni quando utilizzi le richieste dell'API REST HTTP. Quando utilizzi l'API REST, devi seguire le stesse best practice che fanno parte degli SDK. Consenti i timeout e i tentativi sulle richieste lente e le connessioni multiple per permettere il recupero dei dati degli oggetti in parallelo. Per informazioni sull'utilizzo dell'API REST, consulta la Documentazione di riferimento delle API di Amazon Simple Storage Service.