AWS, пропускная способность и доставка контента

31

Мой вопрос касается виртуальных машин и доставки их контента через серверы, подключенные к интернету.

У меня есть экземпляр Windows Ec2, и его сетевое подключение кажется 100 Мбит / с

Если бы я должен был доставлять контент из этого экземпляра EC2, это мое потенциальное узкое место?

Чем отличается s3, я думаю, что у них нет реального потенциального узкого места с s3?

Примечание: я знаю, что s3 и их CDN будут лучше для статического контента, однако мне нужно изучить эту ситуацию сейчас. Наши HTML-страницы должны получать доступ к странице на стороне сервера через AJAX, и потому что в настоящее время нет никакой защиты от бомб для этого, наш контент и наш сервер должны находиться в одном и том же домене, поэтому он исключает использование S3.

Необходимая пропускная способность: я не уверен, что у нас может быть до 100 пользователей, загружающих видео в любое время, вероятно, не больше. Видео может быть до 5 МБ каждый, но они будут просматривать до 20.

Кино
источник
«нам нужен наш HTML для доступа к прокси через JS» ... Что это значит?
Эрик Хаммонд
Какую пропускную способность вы ожидаете использовать на пике?
Эрик Хаммонд
@EricHammond Я обновил свой вопрос,
добавив
Мне не кажется, что у вас есть какая-то конкретная причина для чрезмерной фокусировки на каких-либо конкретных потенциальных узких местах на данный момент. Создайте свой сервис, используя общие рекомендации по масштабируемости, а затем исследуйте и решайте проблемы с производительностью по мере их возникновения. Подавать видео через CDN.
Эрик Хаммонд
1
Кино: Я знаком с той же политикой происхождения в JS, но до сих пор не понимаю, почему это помешало бы вам обслуживать видеоконтент с другим доменом (CDN). Это обычная практика.
Эрик Хаммонд,

Ответы:

60

Я не могу говорить об экземплярах Windows, но предположу, что их базовые характеристики довольно похожи на экземпляры Linux.

Ваша оценка использования полосы пропускания составляет 100 одновременных загрузок видео (я не уверен, что вы имеете в виду загрузку файла или потоковую передачу видео - я приму последнее). Если мы берем скорость потока 512 кбит / с, вам потребуется около 51 Мбит / с или 6,5 Мбит / с.

Экземпляры EC2 отличаются по производительности ввода / вывода (включая пропускную способность). Существует три уровня производительности ввода / вывода: низкий, средний и высокий. Имейте в виду, однако, что дисковый ввод / вывод (то есть из томов EBS) также зависит от пропускной способности. Вы можете реально учитывать пропускную способность только в сети EC2 (так как она будет полностью изменяться через Интернет).

Некоторые типичные числа для количественного определения «низкого», «среднего» и «высокого» (разные источники указывают разные цифры для теоретических значений, поэтому они могут быть не совсем точными).

Высокий: теоретический: 1 Гбит / с = 125 МБ / с; Реалистичная ( источник ): 750 Мбит / с = 95 МБ / с

Умеренный: Теоретический: 250 Мбит / с; Реалистичный ( источник, p57 ): 80 Мбит / с = 10 МБ / с

Низкий: теоретический: 100 Мбит / с; Реалистичные (из моих собственных тестов): 10-15 Мбит / с = 1-2 МБ / с

(На самом деле существует также «очень высокий» уровень (теоретический 10 Гбит / с), но он применяется только к экземплярам кластерных вычислений).

Еще одним упоминанием является степень вариации. В более мелких случаях производительность становится более изменчивой, поскольку физические компоненты распределяются между большим количеством виртуальных машин. Независимо от этого, вы можете ожидать около +/- 20% изменений в вашей производительности (источники: 1 , 2 , 3 ). В вашем случае (согласно предположениям / расчетам в верхней части) вам может потребоваться максимальная пропускная способность 13 МБ / с (двойная 6,5 МБ / с, поскольку дисковый ввод-вывод также ограничен сетью). Если вы передаете контент с меньшей пропускной способностью, вы должны иметь возможность использовать экземпляр с «умеренной» производительностью ввода-вывода (см. Страницу типов экземпляров).), если ваши вычисления приведут к более высокой пропускной способности, вам потребуется экземпляр с «высокой» производительностью ввода-вывода. Простая потоковая передача данных не должна быть связана с процессором или памятью, но для поддержки 100 одновременных подключений, вероятно, потребуется по крайней мере экземпляр среднего размера - и если пропускная способность является проблемой, исходя из вышеизложенного, большой экземпляр будет более безопасной ставкой).

Я бы порекомендовал сравнить запущенные вами серверы, чтобы увидеть, соответствуют ли они вашим (расчетным) потребностям. Запустите два экземпляра (одного и того же типа) и запустите iperfна каждом, используя частные IP-адреса экземпляров - вам потребуется открыть порт 5001 в вашей группе безопасности, если вы запустите его с настройками по умолчанию). Кроме того, большинство тестов за пределами сети EC2 показывают результаты между 80-130 Мбит / с (большие случаи) - хотя такие цифры не обязательно значимы.

CDN будет лучше соответствовать вашим потребностям, если ваша установка позволяет это. S3, по-видимому, имеет ограничение около 50 МБ / с для пропускной способности (по крайней мере, из одного экземпляра) в соответствии с этой статьей , но это больше, чем вам нужно (S3 не поддерживает потоковую передачу). Cloudfront будет лучше подходить для вашей задачи (так как он спроектирован как CDN) и поддерживает 1000 Мбит / с = 125 МБ / с по умолчанию ( источник ) с более высокой пропускной способностью, доступной по запросу, и может также выполнять потоковую передачу контента)

cyberx86
источник
Где вы берете ваши "теоретические" значения Мбит / с? Я не могу найти никакого официального или неофициального источника документации для этих номеров.
Дтеодор
4
Эти цифры, вероятно, к настоящему времени совсем другие (и я не могу отследить источники для них в данный момент). За 4 года многое изменилось. Известно, что EC2 имеет соединения 10 Гбит / с в кластерных группах. В 2007 году AWS указывал цифру 250 Мбит / с выделенной локальной полосы пропускания. В настоящее время пропускная способность сети распределяется между экземплярами, причем приоритет распределяется на основе типа экземпляра (и, возможно, таких факторов, как оптимизация EBS). По крайней мере частично, размер экземпляра определяет, сколько других экземпляров вы совместно используете ресурсы. Если сеть не используется, ваш экземпляр получает большую долю.
cyberx86
Извините, это не по теме, но я не знаю, как еще связаться с @ cyberx86, но просто сообщаю, что срок действия сертификата ssl для вашего сайта истек чуть более недели назад. Извиняюсь за комментирование здесь, но не могу найти адрес электронной почты для вас.
Кевин Лида
1
@KevinLyda Спасибо. Хотя я знал, что срок действия сертификата истек, этот сайт некоторое время не обновлялся, поэтому это была хорошая возможность перейти на автоматическое обновление с помощью LetsEncrypt.
cyberx86
Да, использовал это сам. Очень легко писать сценарии (особенно с неофициальными клиентами) и работать в фоновом режиме.
Кевин Лида,
0

Кажется, что числа меняются со временем и по мере увеличения количества различных типов экземпляров. Но ряд людей публикует тесты. Мне повезло, погуглив [instance category] ec2 network benchmark.

Например, я хотел знать пропускную способность m4.xlargeэкземпляра, поэтому я искал ec2 m4 network benchmark. Я нашел этот результат теста в инженерном блоге Washington Post:

Type       Cost    Bandwidth Bandwidth Cost (1Gb/s) Bandwidth Cost EBS optimized
...
m4.xlarge  $0.252  791Mb/s   $0.320                 $0.320
...
Саймон Вудсайд
источник