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.
quelle
Antworten:
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
iperf
jeweils 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.
quelle
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.xlarge
Instanz kennen, also suchte ichec2 m4 network benchmark
. Ich habe dieses Testergebnis im Engineering-Blog der Washington Post gefunden:quelle