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.
źródło
Odpowiedzi:
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
iperf
każ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ż)
źródło
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.xlarge
instancji, więc szukałemec2 m4 network benchmark
. Znalazłem ten wynik testu na blogu inżynieryjnym Washington Post:źródło