Linee guida per le prestazioni di Amazon S3 - Amazon Simple Storage Service

Linee guida per le prestazioni di 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 Modelli di progettazione delle prestazioni per Amazon S3 più dettagliati.

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

Misurare 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 ulteriori informazioni sui tipi di istanza, consulta Tipi di istanza nella Guida dell'utente di Amazon EC2.

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.

Per comprendere i requisiti relativi alle prestazioni e ottimizzare le prestazioni dell'applicazione, puoi anche monitorare le risposte di errore 503 che ricevi. Il monitoraggio di determinate metriche delle prestazioni può comportare spese aggiuntive. Per ulteriori informazioni, consulta Prezzi di Amazon S3.

Monitoraggio del numero di risposte all'errore di stato 503 (Rallentamento)

Per monitorare il numero di risposte all'errore di stato 503 che ricevi, puoi utilizzare una delle seguenti opzioni:

Monitorando il numero del codice di errore di stato HTTP 503, spesso puoi ottenere informazioni dettagliate preziose su quali prefissi, chiavi o bucket ricevono il maggior numero di richieste di limitazione (della larghezza di banda della rete).

Scalare orizzontalmente le connessioni di archiviazione

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 recuperi con intervallo di byte

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

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.

Nuovi tentativi di richieste per 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.

Combinare Amazon S3 (archiviazione) e Amazon EC2 (calcolo) nello stesso sistema 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 saperne di più sulle linee guida per la denominazione dei bucket, consulta Panoramica sui bucket e Regole di denominazione dei bucket. 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.

È possibile utilizzare lo strumento di confronto della velocità di accelerazione dei trasferimenti di Amazon S3 per confrontare le velocità di caricamento accelerate e non accelerate nelle Regioni di 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.

Utilizza l'ultima versione degli SDK di 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 della REST API, consulta la Documentazione di riferimento delle API di Amazon Simple Storage Service.