AWS, larghezza di banda e consegna dei contenuti


31

La mia domanda riguarda le macchine virtuali e la consegna dei loro contenuti tramite la connessione dei server a Internet.

Ho un'istanza di Windows Ec2 e la sua connessione di rete sembra essere 100 Mbps

Se dovessi fornire contenuti da quell'istanza EC2, QUESTO è il mio potenziale collo di bottiglia?

In che modo differisce s3, immagino che non sia un vero potenziale collo di bottiglia in uscita con s3?

Nota: so che s3 e il loro CDN sarebbero migliori per i contenuti statici, tuttavia per ora devo esplorare questa situazione. Le nostre pagine HTML devono accedere a una pagina laterale del server tramite AJAX, e poiché non vi è alcuna soluzione anti-bomba per questo al momento, i nostri contenuti e il nostro server devono trovarsi esattamente nello stesso dominio, quindi esclude l'utilizzo di S3.

Larghezza di banda necessaria: non sono sicuro che potremmo avere fino a 100 utenti che scaricano video in qualsiasi momento, probabilmente non di più. I video possono contenere fino a 5 MB ciascuno, ma visualizzerebbero fino a 20.


"abbiamo bisogno del nostro HTML per accedere a un proxy tramite JS" ... Cosa significa?
Eric Hammond,

Quanta larghezza di banda ti aspetti di utilizzare al massimo?
Eric Hammond,

@EricHammond Ho aggiornato la mia domanda con qualche informazione in più
Keeno,

Non mi sembra che tu abbia qualche motivo particolare per essere iper focalizzato su eventuali potenziali colli di bottiglia a questo punto. Sviluppa il tuo servizio utilizzando le migliori pratiche comuni per la scalabilità, quindi esamina e risolvi i problemi di prestazioni non appena si presentano. Servi video attraverso una CDN.
Eric Hammond,

1
Keeno: ho familiarità con la stessa politica di origine in JS, ma ancora non vedo perché ti impedirebbe di pubblicare i contenuti video con un dominio diverso (CDN). Questa è una pratica comune.
Eric Hammond,

Risposte:


60

Non posso parlare per le istanze di Windows, ma presumo che le loro caratteristiche di base siano abbastanza simili alle istanze di Linux.

La tua stima per l'utilizzo della larghezza di banda è di 100 download di video simultanei (non sono sicuro che tu intenda scaricare il file o eseguire lo streaming del video - assumerò quest'ultimo). Se prendiamo una velocità di streaming di 512 kbps, sono necessari circa 51 MB / s o 6,5 MB / s.

Le istanze EC2 differiscono nelle loro prestazioni I / O (che include la larghezza di banda). Esistono 3 livelli di prestazioni I / O: basso, moderato e alto. Tuttavia, tenere presente che l'I / O del disco (ovvero dai volumi EBS) dipende anche dalla larghezza di banda. Puoi davvero considerare solo la larghezza di banda all'interno della rete EC2 (poiché sarà completamente variabile su Internet).

Alcuni numeri tipici per quantificare 'basso', 'medio' e 'alto' (fonti diverse citano numeri diversi per valori teorici, quindi potrebbero non essere completamente precisi).

Alto: teorico: 1 Gbps = 125 MB / s; Realistico ( sorgente ): 750 Mbps = 95 MB / s

Moderato: teorico: 250 Mbps; Realistico ( fonte, p57 ): 80 Mbps = 10 MB / s

Basso: teorico: 100 Mbps; Realistico (dai miei test): 10-15 Mbps = 1-2 MB / s

(Esiste effettivamente anche un livello "molto elevato" (teorico a 10 Gbps) ma si applica solo alle istanze di calcolo del cluster).

Un ulteriore punto di menzione è il grado di variazione. Su istanze più piccole, c'è maggiore variabilità nelle prestazioni poiché i componenti fisici sono condivisi tra più macchine virtuali. Indipendentemente da ciò, ci si può aspettare una variazione di circa il 20% delle prestazioni (fonti: 1 , 2 , 3 ). Nel tuo caso (come da ipotesi / calcoli in alto), potresti aver bisogno di una larghezza di banda di picco di 13 MB / s (doppio 6,5 MB, poiché anche l'I / O del disco è limitato in rete). Se si trasferiscono contenuti con larghezza di banda inferiore, si dovrebbe essere in grado di utilizzare un'istanza con prestazioni I / O "moderate" (vedere la pagina dei tipi di istanza), se i tuoi calcoli comportano un requisito di larghezza di banda maggiore, avrai bisogno di un'istanza con prestazioni I / O "elevate". Il semplice streaming dei dati non dovrebbe essere associato alla CPU o alla memoria, ma sostenere 100 connessioni simultanee richiederà probabilmente almeno un'istanza di medie dimensioni - e se la larghezza di banda è un problema, in base a quanto sopra, un'istanza di grandi dimensioni sarebbe una scommessa più sicura).

Consiglierei di confrontare i server che avvii per vedere se soddisfano le tue esigenze (calcolate). Avviare due istanze (dello stesso tipo) ed eseguirle iperfsu ciascuna utilizzando gli indirizzi IP privati ​​delle istanze: sarà necessario aprire la porta 5001 nel gruppo di sicurezza se la si esegue con le impostazioni predefinite). Inoltre, la maggior parte dei test al di fuori della rete EC2 mostra risultati compresi tra 80 e 130 Mbps (casi di grandi dimensioni), sebbene tali numeri non siano necessariamente significativi.

Un CDN sarebbe più adatto alle tue esigenze, se il tuo setup lo consente. S3 sembra avere un limite di circa 50 MB / s per la larghezza di banda (almeno da una singola istanza) come da questo articolo , ma questo è superiore a quello che dovresti richiedere (S3 non supporta lo streaming). Cloudfront sarebbe più adatto alla tua attività (poiché è progettato come CDN) e supporta 1000 Mbps = 125 MB / s per impostazione predefinita ( sorgente ) con una larghezza di banda maggiore disponibile su richiesta e può anche trasmettere contenuti)


Dove ottieni i tuoi valori "teorici" Mbps? Non riesco a trovare alcuna fonte ufficiale o non ufficiale di documentazione per questi numeri.
Dtheodor,

4
Quei numeri sono probabilmente molto diversi ormai (e al momento non riesco a rintracciare le fonti per loro). Molto è cambiato in 4 anni. È noto che EC2 ha interconnessioni a 10 Gbps all'interno di gruppi di cluster. AWS (nel 2007) citava una cifra della larghezza di banda locale dedicata a 250 Mbps. Attualmente, la larghezza di banda della rete è condivisa tra istanze, con priorità assegnata in base al tipo di istanza (e possibilmente a fattori come l'ottimizzazione EBS). Almeno in parte, la dimensione dell'istanza determina con quante altre istanze condividi le risorse. Se la rete non viene utilizzata, l'istanza ottiene una condivisione più ampia.
cyberx86,

Siamo spiacenti, questo è fuori tema, ma non so come altro contattare @ cyberx86 ma solo per farti sapere che il certificato SSL per il tuo sito Web è scaduto poco più di una settimana fa. Mi scuso per i commenti qui, ma non riesco a trovare un indirizzo email per te.
Kevin Lyda,

1
@KevinLyda Grazie. Sebbene sapessi che il certificato era scaduto, quel sito non è stato aggiornato da un po 'di tempo, quindi questa è stata una buona opportunità per migrare ai rinnovi automatici con LetsEncrypt.
cyberx86,

Sì, lo sto usando da solo. Molto facile da scrivere (in particolare con i clienti non ufficiali) e iniziare a lavorare in background.
Kevin Lyda,

0

I numeri sembrano cambiare nel tempo e con il proliferare del numero di diversi tipi di istanza. Ma un certo numero di persone pubblica benchmark. Ho avuto un po 'di fortuna cercando su Google [instance category] ec2 network benchmark.

Ad esempio, volevo conoscere la larghezza di banda di m4.xlargeun'istanza, quindi ho cercato ec2 m4 network benchmark. Ho trovato questo risultato del test dal blog di ingegneria del Washington Post:

Type       Cost    Bandwidth Bandwidth Cost (1Gb/s) Bandwidth Cost EBS optimized
...
m4.xlarge  $0.252  791Mb/s   $0.320                 $0.320
...
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.