Frage AWS, Bandbreite und Inhaltsbereitstellung


Meine Frage bezieht sich auf virtuelle Maschinen und die Bereitstellung ihrer Inhalte über die Serververbindung mit dem Internet.

Ich habe eine Windows-Instanz, und seine Netzwerkverbindung scheint 100mbps zu sein

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

Wie unterscheidet sich s3, ich nehme an, dass es sich bei s3 nicht wirklich um einen möglichen ausgehenden Engpass handelt?

Hinweis: Ich weiß, s3 und ihre CDN wäre besser für statische Inhalte, aber ich muss diese Situation für jetzt erkunden. Unsere HTML-Seiten müssen über AJAX auf eine Server-Seite zugreifen, und da es im Moment keine bombensichere Arbeit dafür gibt, müssen sich unser Inhalt und unser Server in genau der gleichen Domäne befinden, so dass es S3 ausschließt.

Bandbreite benötigt: Ich bin mir nicht sicher, ob wir bis zu 100 Nutzer haben können, die Videos jederzeit herunterladen können, wahrscheinlich nicht mehr. Videos können jeweils bis zu 5 MB groß sein, aber sie würden bis zu 20 anzeigen.


30
2017-10-26 11:14


Ursprung


"Wir brauchen unseren HTML-Code, um über JS auf einen Proxy zuzugreifen" ... Was bedeutet das? - Eric Hammond
Wie viel Bandbreite benötigen Sie zu Spitzenleistung? - Eric Hammond
@EricHammond Ich habe meine Frage mit einigen weiteren Informationen aktualisiert - Keeno
Es klingt für mich nicht so, als ob Sie einen besonderen Grund hätten, sich zu diesem Zeitpunkt auf mögliche Engpässe konzentriert zu konzentrieren. Erstellen Sie Ihren Service mithilfe gängiger Best Practices für die Skalierbarkeit und untersuchen und beheben Sie dann auftretende Leistungsprobleme. Serve Videos über ein CDN. - Eric Hammond
Keeno: Ich bin mit der gleichen Ursprungsrichtlinie in JS vertraut, sehe aber immer noch nicht, warum es Sie daran hindern würde, den Video-Content mit einer anderen Domain (CDN) zu liefern. Dies ist gängige Praxis. - Eric Hammond


Antworten:


Ich kann nicht für Windows-Instanzen sprechen, aber ich nehme an, dass ihre Basiseigenschaften Linux-Instanzen ziemlich ähnlich sind.

Ihre Schätzung für die Bandbreitennutzung ist 100 gleichzeitige Video-Downloads (ich bin mir nicht sicher, ob Sie das Herunterladen der Datei oder das Streaming des Videos meinen - ich nehme das letztere an). Wenn wir eine Streamrate von 512 kbps verwenden, benötigen Sie etwa 51 MBit / s oder 6,5 MB / s.

EC2-Instanzen unterscheiden sich in ihrer E / A-Leistung (einschließlich Bandbreite). Es gibt drei E / A-Leistungsstufen: niedrig, mittel und hoch. Denken Sie jedoch daran, dass Festplatten-E / A (d. H. Von EBS-Volumes) ebenfalls bandbreitenabhängig ist. Sie können Bandbreite nur innerhalb des EC2-Netzwerkes wirklich berücksichtigen (da es über das Internet völlig variabel sein wird).

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

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

Mäßig:  Theoretisch: 250Mbps; Realistisch (Quelle, S.57): 80 Mbit / s = 10 MB / s

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

(Es gibt auch einen 'sehr hohen' Pegel (10Gbps theoretisch), aber das gilt nur für Cluster-Compute-Instanzen).

Ein weiterer erwähnenswerter Punkt ist der Grad der Variation. Bei kleineren Instanzen besteht eine größere Variabilität in der Leistung, da die physischen Komponenten von mehreren virtuellen Maschinen gemeinsam genutzt werden. Unabhängig davon können Sie mit einer Abweichung von ca. +/- 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 Festplatten-E / A auch netzwerkbegrenzt ist). Wenn Sie Inhalte mit geringerer Bandbreite übertragen, sollten Sie in der Lage sein, eine Instanz mit "moderater" E / A-Leistung zu verwenden (siehe Instanztypenseite) Wenn Ihre Berechnungen zu einer höheren Bandbreitenanforderung führen, benötigen Sie eine Instanz mit einer hohen E / A-Leistung. Einfaches Streamen der Daten sollte nicht an die CPU oder den Speicher gebunden sein, aber das Aufrechterhalten von 100 gleichzeitigen Verbindungen wird wahrscheinlich mindestens eine mittelgroße Instanz erfordern - und wenn Bandbreite eine Rolle spielt, wäre eine große Instanz eine sicherere Wette.

Ich würde empfehlen, die Server, die Sie starten, zu vergleichen, um zu sehen, ob sie Ihre (berechneten) Bedürfnisse erfüllen. Starten Sie zwei Instanzen (des gleichen Typs) und führen Sie sie aus iperf Wenn Sie die privaten IP-Adressen der Instanzen verwenden, müssen Sie 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-130 Mbps (große Instanzen) - obwohl solche Zahlen nicht unbedingt aussagekräftig sind.

Ein CDN wäre besser auf Ihre Bedürfnisse zugeschnitten, wenn Ihre Einrichtung es erlaubt. S3 scheint eine Grenze von etwa 50 MB / s für die Bandbreite (zumindest von einer einzelnen Instanz) gemäß zu haben Dieser Beitrag, aber das ist höher als das, was Sie benötigen sollten (S3 unterstützt kein Streaming). Cloudfront wäre besser für Ihre Aufgabe geeignet (da es als CDN konzipiert ist) und unterstützt standardmäßig 1000 Mbit / s = 125 MB / s (Quelle) mit höherer Bandbreite auf Anfrage verfügbar und kann Inhalte streamen)


58
2017-11-01 20:13



Woher bekommen Sie Ihre "theoretischen" Mbps-Werte? Ich kann keine offizielle oder inoffizielle Dokumentationsquelle für diese Nummern finden. - dtheodor
Diese Zahlen sind wahrscheinlich ziemlich unterschiedlich (und ich kann im Moment keine Quellen für sie finden). In 4 Jahren hat sich viel verändert. Es ist bekannt, dass EC2 10-Gbps-Verbindungen innerhalb von Clustergruppen aufweist. AWS verwendete (im Jahr 2007) eine dedizierte lokale Bandbreite von 250 Mbit / s. Gegenwärtig wird Netzwerkbandbreite zwischen Instanzen aufgeteilt, wobei die Priorität basierend auf dem Instanztyp (und möglicherweise Faktoren wie einer EBS-Optimierung) zugewiesen wird. Zumindest teilweise bestimmt die Instanzgröße, wie viele andere Instanzen Sie Ressourcen gemeinsam nutzen. Wenn das Netzwerk nicht verwendet wird, erhält Ihre Instanz einen größeren Anteil. - cyberx86
Entschuldigung, dies ist ein Thema, aber ich weiß nicht, wie ich sonst @ @ cyberx86 kontaktieren soll, sondern nur, dass Sie wissen, dass das SSL-Zertifikat für Ihre Website vor etwas mehr als einer Woche abgelaufen ist. Entschuldigung für das Kommentieren hier, kann aber keine E-Mail-Adresse für Sie finden. - Kevin Lyda
@KevinLyda Danke. Während ich wusste, dass das Zertifikat abgelaufen war, wurde diese Seite für einige Zeit nicht aktualisiert - also war dies eine gute Gelegenheit, zu automatischen Verlängerungen mit LetsEncrypt zu migrieren. - cyberx86
Ja, ich benutze es selbst. Sehr einfach zu schreiben (vor allem mit den nicht-offiziellen Kunden) und arbeiten im Hintergrund arbeiten. - Kevin Lyda


Die Zahlen scheinen sich im Laufe der Zeit zu ändern und die Anzahl der verschiedenen Instanztypen nimmt zu. Aber eine Reihe von Leuten gibt Benchmarks bekannt. Ich hatte ein bisschen Glück beim googeln [instance category] ec2 network benchmark.

Zum Beispiel wollte ich die Bandbreite eines kennen m4.xlarge Beispiel, also habe ich gesucht ec2 m4 network benchmark. Ich habe dieses Testergebnis vom 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
...

0
2018-05-11 00:52