AWS, przepustowość i dostarczanie treści


31

Moje pytanie dotyczy maszyn wirtualnych i dostarczania ich treści za pośrednictwem połączenia serwerów z Internetem.

Mam instancję Windows Ec2, a jej połączenie sieciowe wygląda na 100 Mb / s

Jeśli miałbym dostarczać treści z tego wystąpienia EC2, czy to jest moje potencjalne wąskie gardło?

Czym różni się s3, zgaduję, że nie ma rzeczywistego potencjalnego wąskiego gardła w s3?

Uwaga: Wiem, że s3 i ich CDN byłyby lepsze dla treści statycznych, jednak na razie muszę zbadać tę sytuację. Nasze strony HTML muszą uzyskać dostęp do strony po stronie serwera za pośrednictwem AJAX, a ponieważ nie ma w tym momencie rozwiązania odpornego na bomby, nasza zawartość i nasz serwer muszą znajdować się w dokładnie tej samej domenie, więc wyklucza to używanie S3.

Potrzebna przepustowość: nie jestem pewien, moglibyśmy mieć do 100 użytkowników pobierających filmy w dowolnym momencie, prawdopodobnie już więcej. Filmy mogą mieć rozmiar do 5 MB, ale wyświetlają do 20.


„Potrzebujemy naszego HTML, aby uzyskać dostęp do proxy za pośrednictwem JS” ... Co to znaczy?
Eric Hammond,

Jakiej przepustowości oczekujesz używać w szczycie?
Eric Hammond,

@EricHammond Zaktualizowałem swoje pytanie o więcej informacji
Keeno,

Nie wydaje mi się, żebyś miał jakiś szczególny powód, aby w tym momencie skupiać się na konkretnych wąskich gardłach. Zbuduj swoją usługę przy użyciu popularnych najlepszych praktyk dotyczących skalowalności, a następnie badaj i rozwiązuj problemy z wydajnością, gdy się pojawią. Obsługuj filmy za pośrednictwem CDN.
Eric Hammond,

1
Keeno: Znam te same zasady pochodzenia w JS, ale wciąż nie rozumiem, dlaczego uniemożliwiłoby ci to wyświetlanie treści wideo w innej domenie (CDN). To jest powszechna praktyka.
Eric Hammond

Odpowiedzi:


60

Nie mogę mówić w przypadku instancji systemu Windows, ale założę, że ich podstawowe cechy są dość podobne do instancji systemu Linux.

Szacowane wykorzystanie przepustowości wynosi 100 jednoczesnych pobrań wideo (nie jestem pewien, czy masz na myśli pobranie pliku czy przesyłanie strumieniowe wideo - założę to drugie). Jeśli weźmiemy prędkość transmisji 512 kb / s, potrzebujesz około 51 Mb / s lub 6,5 MB / s.

Instancje EC2 różnią się wydajnością we / wy (która obejmuje przepustowość). Istnieją 3 poziomy wydajności We / Wy: niski, umiarkowany i wysoki. Należy jednak pamiętać, że dyskowe operacje we / wy (tj. Z woluminów EBS) również zależą od przepustowości. Można naprawdę rozważyć szerokość pasma tylko w sieci EC2 (ponieważ będzie ona całkowicie zmienna przez Internet).

Niektóre typowe liczby do kwantyfikacji „niskiej”, „średniej” i „wysokiej” (różne źródła podają różne liczby dla wartości teoretycznych, więc mogą nie być całkowicie dokładne).

Wysoka: Teoretyczna: 1 Gb / s = 125 MB / s; Realistyczny ( źródło ): 750 Mb / s = 95 MB / s

Umiarkowany: Teoretyczny: 250 Mb / s; Realistyczny ( źródło, p57 ): 80 Mb / s = 10 MB / s

Niski: Teoretyczny: 100 Mb / s; Realistyczne (z moich własnych testów): 10-15 Mb / s = 1-2 MB / s

(W rzeczywistości istnieje również „bardzo wysoki” poziom (teoretycznie 10 Gb / s), ale dotyczy to tylko instancji obliczeń klastrowych).

Kolejnym punktem odniesienia jest stopień zmienności. W mniejszych instancjach występuje większa zmienność wydajności, ponieważ fizyczne komponenty są współużytkowane przez więcej maszyn wirtualnych. Niezależnie od tego możesz spodziewać się około +/- 20% zmienności swojej wydajności (źródła: 1 , 2 , 3 ). W twoim przypadku (zgodnie z założeniami / obliczeniami u góry) może być potrzebna maksymalna przepustowość 13 MB / s (podwójne 6,5 MB / s, ponieważ dyskowe operacje we / wy są również ograniczone przez sieć). Jeśli przenosisz mniejszą przepustowość, powinieneś być w stanie użyć instancji o „umiarkowanej” wydajności we / wy (patrz strona typów instancji), jeśli twoje obliczenia skutkują wyższym wymaganiem przepustowości, będziesz potrzebować instancji o „wysokiej” wydajności We / Wy. Zwykłe przesyłanie strumieniowe danych nie powinno być związane z procesorem ani pamięcią, ale utrzymanie 100 równoczesnych połączeń prawdopodobnie będzie wymagać co najmniej średniej instancji - a jeśli przepustowość stanowi problem, w oparciu o powyższe, duża instancja byłaby bezpieczniejsza).

Polecam przetestować uruchamiane serwery, aby sprawdzić, czy spełniają one (obliczone) potrzeby. Uruchom dwie instancje (tego samego typu) i uruchom iperfkażdą z nich, używając prywatnych adresów IP instancji - musisz otworzyć port 5001 w grupie zabezpieczeń, jeśli uruchamiasz go z ustawieniami domyślnymi). Ponadto większość testów poza siecią EC2 wykazuje wyniki w zakresie 80–130 Mb / s (duże instancje) - chociaż liczby te niekoniecznie są znaczące.

CDN byłby lepiej dostosowany do twoich potrzeb, jeśli konfiguracja na to pozwala. Wydaje się, że S3 ma limit przepustowości około 50 MB / s (przynajmniej z jednej instancji) zgodnie z tym artykułem , ale jest on wyższy niż to, czego należy wymagać (S3 nie obsługuje przesyłania strumieniowego). CloudFront będzie lepiej dostosowane do zadania (jak to jest zaprojektowany jako CDN) i obsługuje 1000Mbps = 125MB / s (domyślnie źródłowego ) z wyższej przepustowości dostępnej na żądanie i może przesyłać treści, jak również)


Skąd bierzesz swoje „teoretyczne” wartości Mbps? Nie mogę znaleźć żadnego oficjalnego ani nieoficjalnego źródła dokumentacji dla tych liczb.
dtheodor

4
Liczby te są prawdopodobnie całkiem inne (i obecnie nie wydaje mi się, aby znaleźć dla nich źródła). Wiele się zmieniło w ciągu 4 lat. Wiadomo, że EC2 ma połączenia 10 Gb / s w ramach grup klastrowych. AWS zwykło (w 2007 r.) Podawać wartość 250 Mb / s dedykowanej przepustowości lokalnej. Obecnie przepustowość sieci jest współdzielona między instancjami, z priorytetem przydzielanym na podstawie typu instancji (i ewentualnie czynników takich jak optymalizacja EBS). Przynajmniej częściowo rozmiar instancji określa, z iloma innymi instancjami współużytkujesz zasoby. Jeśli sieć nie jest używana, instancja otrzymuje większy udział.
cyberx86

Przykro mi, to nie jest temat, ale nie wiem, jak jeszcze skontaktować się z @ cyberx86, ale po prostu informuję, że certyfikat SSL dla Twojej witryny wygasł nieco ponad tydzień temu. Przepraszamy za komentarz, ale nie mogę znaleźć adresu e-mail dla Ciebie.
Kevin Lyda,

1
@KevinLyda Thanks. Chociaż wiedziałem, że certyfikat wygasł, ta strona nie była aktualizowana przez pewien czas - więc była to dobra okazja do migracji do automatycznego odnawiania za pomocą LetsEncrypt.
cyberx86,

Tak, sam go używałem. Bardzo łatwy do pisania skryptów (szczególnie w przypadku nieoficjalnych klientów) i pracy w tle.
Kevin Lyda,

0

Liczby wydają się zmieniać w miarę upływu czasu, a liczba różnych typów instancji się powiększa. Ale wiele osób publikuje testy porównawcze. Miałem trochę szczęścia, googlując [instance category] ec2 network benchmark.

Na przykład chciałem poznać przepustowość m4.xlargeinstancji, więc szukałem ec2 m4 network benchmark. Znalazłem ten wynik testu na blogu inżynieryjnym Washington Post:

Type       Cost    Bandwidth Bandwidth Cost (1Gb/s) Bandwidth Cost EBS optimized
...
m4.xlarge  $0.252  791Mb/s   $0.320                 $0.320
...
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.