AWS, Bandbreite und Inhaltszustellung

31

Meine Frage bezieht sich auf virtuelle Maschinen und deren Bereitstellung über die Serververbindung zum Internet.

Ich habe eine Ec2-Windows-Instanz und die Netzwerkverbindung scheint 100 MBit / s zu sein

Wenn ich Inhalte von dieser EC2-Instanz liefern würde, ist DAS mein potenzieller Engpass?

Wie unterscheidet sich s3, ich vermute, es gibt keinen wirklichen möglichen ausgehenden Engpass mit s3?

Hinweis: Ich weiß, dass s3 und deren CDN für statische Inhalte besser geeignet sind. Ich muss diese Situation jedoch erst einmal untersuchen. Unsere HTML-Seiten müssen über AJAX auf eine serverseitige Seite zugreifen, und da dies derzeit nicht bombensicher ist, müssen sich unser Inhalt und unser Server in genau derselben Domäne befinden, sodass S3 nicht verwendet werden kann.

Erforderliche Bandbreite: Ich bin mir nicht sicher, ob wir bis zu 100 Benutzer haben könnten, die jederzeit Videos herunterladen, wahrscheinlich nicht mehr. Videos können jeweils bis zu 5 MB groß sein, sie können jedoch bis zu 20 MB anzeigen.

Keeno
quelle
"Wir brauchen unseren HTML-Code, um über JS auf einen Proxy zugreifen zu können" ... Was bedeutet das?
Eric Hammond
Wie viel Bandbreite benötigen Sie zu Spitzenzeiten?
Eric Hammond
@EricHammond Ich habe meine Frage mit einigen weiteren Informationen aktualisiert
Keeno
Es hört sich für mich nicht so an, als hätten Sie einen besonderen Grund, sich an dieser Stelle auf bestimmte potenzielle Engpässe zu konzentrieren. Bauen Sie Ihren Service unter Verwendung allgemeiner Best Practices für Skalierbarkeit auf und untersuchen und lösen Sie Leistungsprobleme, sobald sie auftreten. Videos über eine CDN bereitstellen.
Eric Hammond
1
Keeno: Ich kenne die gleiche Herkunftsrichtlinie in JS, verstehe aber immer noch nicht, warum Sie dadurch daran gehindert würden, den Videocontent mit einer anderen Domain (CDN) bereitzustellen. Dies ist gängige Praxis.
Eric Hammond

Antworten:

60

Ich kann nicht für Windows-Instanzen sprechen, aber ich gehe davon aus, dass ihre Basismerkmale denen von Linux-Instanzen ziemlich ähnlich sind.

Ihre Schätzung für die Bandbreitennutzung liegt bei 100 gleichzeitigen Video-Downloads (Ich bin mir nicht sicher, ob Sie die Datei herunterladen oder das Video streamen möchten - ich gehe davon aus, dass letztere verwendet werden). Wenn wir eine Stream-Rate von 512 kbit / s annehmen, benötigen Sie ungefähr 51 Mbit / s oder 6,5 Mbit / s.

EC2-Instanzen unterscheiden sich in ihrer E / A-Leistung (einschließlich Bandbreite). Es gibt 3 Ebenen der E / A-Leistung: niedrig, mittel und hoch. Beachten Sie jedoch, dass die Festplatten-E / A (dh von EBS-Volumes) auch bandbreitenabhängig ist. Die Bandbreite kann nur innerhalb des EC2-Netzwerks wirklich berücksichtigt werden (da sie über das Internet vollständig variabel ist).

Einige typische Zahlen zur Quantifizierung von "niedrig", "mittel" und "hoch" (verschiedene Quellen zitieren unterschiedliche Zahlen für theoretische Werte, sodass sie möglicherweise nicht vollständig korrekt sind).

Hoch: Theoretisch: 1 Gbit / s = 125 MB / s; Realistisch ( Quelle ): 750 Mbit / s = 95 Mbit / s

Moderat: Theoretisch: 250 Mbit / s; Realistisch ( Quelle, S. 57 ): 80 Mbit / s = 10 Mbit / s

Niedrig: Theoretisch: 100 Mbit / s; Realistisch (aus meinen eigenen Tests): 10-15Mbps = 1-2MB / s

(Tatsächlich gibt es auch einen sehr hohen Pegel (theoretisch 10 Gbit / s), der jedoch nur für Cluster-Compute-Instanzen gilt.)

Ein weiterer Punkt ist der Variationsgrad. Bei kleineren Instanzen ist die Leistung variabler, da die physischen Komponenten von mehreren virtuellen Maschinen gemeinsam genutzt werden. Unabhängig davon können Sie mit einer Leistungsabweichung von +/- 20% rechnen (Quellen: 1 , 2 , 3 ). In Ihrem Fall (gemäß den Annahmen / Berechnungen oben) benötigen Sie möglicherweise eine Spitzenbandbreite von 13 MB / s (doppelte 6,5 MB / s, da die Festplatten-E / A ebenfalls netzwerkbeschränkt sind). Wenn Sie Inhalte mit geringerer Bandbreite übertragen, sollten Sie in der Lage sein, eine Instanz mit „mäßiger“ E / A-Leistung zu verwenden (siehe Seite mit den Instanztypen)), wenn Ihre Berechnungen zu einem höheren Bandbreitenbedarf führen, benötigen Sie eine Instanz mit 'hoher' E / A-Leistung. Das einfache Streamen der Daten sollte nicht an die CPU oder den Speicher gebunden sein, aber das Aufrechterhalten von 100 gleichzeitigen Verbindungen erfordert wahrscheinlich mindestens eine mittelgroße Instanz.

Ich würde empfehlen, die Server, die Sie starten, einem Benchmarking zu unterziehen, um festzustellen, ob sie Ihren (berechneten) Anforderungen entsprechen. Starten Sie zwei Instanzen (desselben Typs) und führen Sie sie iperfjeweils mit den privaten IP-Adressen der Instanzen aus. Sie müssen den Port 5001 in Ihrer Sicherheitsgruppe öffnen, wenn Sie ihn mit den Standardeinstellungen ausführen. Darüber hinaus zeigen die meisten Tests außerhalb des EC2-Netzwerks Ergebnisse zwischen 80 und 130 Mbit / s (große Instanzen) - obwohl solche Zahlen nicht unbedingt aussagekräftig sind.

Ein CDN ist besser für Ihre Anforderungen geeignet, wenn Ihr Setup dies zulässt. S3 hat anscheinend ein Limit von 50 MB / s für die Bandbreite (zumindest von einer einzelnen Instanz) gemäß diesem Artikel , aber das ist höher als das, was Sie benötigen sollten (S3 unterstützt kein Streaming). Cloudfront ist besser für Ihre Aufgabe geeignet (da es als CDN konzipiert ist) und unterstützt standardmäßig 1000 Mbit / s = 125 Mbit / s ( Quelle ), wobei auf Anfrage eine höhere Bandbreite verfügbar ist und auch Inhalte gestreamt werden können.

cyberx86
quelle
Woher bekommst du deine "theoretischen" Mbps-Werte? Ich kann keine offizielle oder inoffizielle Dokumentationsquelle für diese Nummern finden.
Dtheodor
4
Diese Zahlen sind wahrscheinlich inzwischen ziemlich unterschiedlich (und ich kann im Moment keine Quellen für sie aufspüren). In 4 Jahren hat sich viel verändert. Es ist bekannt, dass EC2 10-Gbit / s-Verbindungen innerhalb von Clustergruppen aufweist. AWS hat (2007) eine dedizierte lokale Bandbreite von 250 Mbit / s angegeben. Gegenwärtig wird die Netzwerkbandbreite von Instanzen gemeinsam genutzt, wobei die Priorität auf der Grundlage des Instanztyps (und möglicherweise aufgrund von Faktoren wie der EBS-Optimierung) zugewiesen wird. Zumindest teilweise bestimmt die Instanzgröße, mit wie vielen anderen Instanzen Sie Ressourcen gemeinsam nutzen. Wenn das Netzwerk nicht verwendet wird, erhält Ihre Instanz eine größere Freigabe.
cyberx86
Es tut uns leid, aber ich weiß nicht, wie ich mich an @ cyberx86 wenden soll, aber ich möchte Sie nur darauf hinweisen, dass das SSL-Zertifikat für Ihre Website vor etwas mehr als einer Woche abgelaufen ist. Entschuldigung, dass Sie hier einen Kommentar abgegeben haben, aber keine E-Mail-Adresse für Sie gefunden haben.
Kevin Lyda
1
@ KevinLyda Danke. Obwohl ich wusste, dass das Zertifikat abgelaufen war, wurde diese Site seit einiger Zeit nicht aktualisiert. Dies war also eine gute Gelegenheit, um zu automatischen Verlängerungen mit LetsEncrypt zu migrieren.
Cyberx86
Ja, benutze es selbst. Sehr einfach zu skripten (besonders bei nicht offiziellen Clients) und im Hintergrund zu arbeiten.
Kevin Lyda
0

Die Zahlen scheinen sich mit der Zeit zu ändern und mit der Anzahl der verschiedenen Instanztypen zu wachsen. Aber einige Leute setzen Benchmarks. Ich hatte Glück beim googeln [instance category] ec2 network benchmark.

Zum Beispiel wollte ich die Bandbreite einer m4.xlargeInstanz kennen, also suchte ich ec2 m4 network benchmark. Ich habe dieses Testergebnis im Engineering-Blog der Washington Post gefunden:

Type       Cost    Bandwidth Bandwidth Cost (1Gb/s) Bandwidth Cost EBS optimized
...
m4.xlarge  $0.252  791Mb/s   $0.320                 $0.320
...
Simon Woodside
quelle