Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

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

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

Умеренный: Теоретическая: 250 Мбит / с; Реалистичный (источник, стр. 57): 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 МБ / с (источник) с более высокой пропускной способностью доступна по запросу и может также транслировать контент)

Цифры, кажется, меняются со временем и по мере увеличения количества различных типов экземпляров. Но некоторые люди публикуют тесты. Мне повезло погуглить [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
...