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

Аппаратная конфигурация скорости передачи данных

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

Вот небольшая предыстория: у меня есть образовательный веб-сайт с видео по запросу для онлайн-уроков. В течение 4 лет мы размещали все наши собственные медиа, используя 6 выделенных серверов Wowza по всему миру для доставки наших медиа. Наши затраты на это составляли около 1500 долларов в месяц.

Стремясь улучшить обслуживание, мы заручились поддержкой CDN, которая хорошо себя зарекомендовала, но теперь наши расходы на хостинг выросли примерно до 6000 долларов в месяц, и мы хотели бы вернуться к 98% -ному хостингу самостоятельно и использовать аутсорсинг только в CDN как в крайнем случае со сценарием ролловера.

Когда у нас были все собственные выделенные серверы, мы обычно использовали 2-х четырехъядерный процессор 2,66 ГГц с оперативной памятью 16 ГБ и 2 SSD в RAID0. Несмотря на то, что мы заказывали одно и то же у одной и той же хостинговой компании, только в разных частях мира, мы могли заметить большие различия в производительности, которые, казалось, были на уровне оборудования, а не на уровне сети.

Мы договорились о совместном размещении с ними по отличной цене, но теперь я застрял в попытках определить, как добиться максимальной производительности для того, что мне нужно.

================================

Теперь мой вопрос

Скажем, я хочу, чтобы оптимальное время передачи / поиска данных обеспечивало максимальное количество одновременных видео? Если у меня одновременно подключено 1000 пользователей, они могут одновременно открывать до 250-400 отдельных видеофайлов. Я понимаю, что могу получить 8 SSD-дисков SAS и поместить их в RAID, но как насчет процессора или ОЗУ?

Глядя на ebay, я вижу такие вещи, как:

PowerEdge R810 1U Server (4X) 1.87GHz Eight-Core Xeon L7555 192GB RAM
POWEREDGE R810 SERVER FOUR X7550 2.0GHZ 96GB

С точки зрения процессора, я могу найти модели с 8–30 МБ кэш-памяти третьего уровня, но имеет ли это значение для этого? Что мне лучше с двумя четырехъядерными процессорами, или мне нужно четыре восьмиъядерных процессора, чтобы получить от этого максимальную отдачу?

Я понимаю от поставщика программного обеспечения, что больше оперативной памяти лучше, когда у вас открыто несколько файлов, но в целом они отказываются предоставить более подробную информацию о том, какой тип оборудования на самом деле даст вам конкретный результат. Все, что они говорят, это:

http://www.wowza.com/products/streaming-engine/specifications
High-load recommended production hardware
CPU: Dual Quad-Core or a single Hex-Core, 3.00 GHz or better
RAM: 16-32GB
Disk: 2 or more in RAID 0 (striping)
Network: 10Gbps Ethernet

Это здорово, но не сказано, каков будет результат с этой конфигурацией. Обычно в любой день мне нужно иметь возможность транслировать 15 000 видео в течение всего дня, при одновременном пике 1500. С точки зрения пропускной способности я мог бы добиться этого с помощью одного подключения к Интернету, если бы оборудование могло не отставать. Я знаю, что наличие нескольких местоположений дает преимущества, но я все равно смогу сэкономить более 50 000 долларов в год, если смогу просто выяснить проблемы с оборудованием.

В конце концов, я думаю, мне интересно, был ли у меня сверхвысокопроизводительный RAID, в каком порядке мне нужно беспокоиться дальше? Стоит ли ориентироваться только на тактовую частоту, кеш L3, оперативную память?

=================================

Обновить:

Я приобрел новый сервер и изучаю больше о конфигурациях и производительности RAID. Если вы хотите продолжить, вы можете увидеть следующую часть саги здесь:

Новый RAID hdparm медленный

Не думаю, что можно сказать: купите X, установите Y, и ваша проблема сразу же решится. Это займет несколько итераций, и вам нужно будет приложить больше усилий для выявления узких мест, когда они неизбежно появятся. По большей части я не буду рекомендовать конкретное оборудование, так как оно устареет к тому моменту, когда я нажму кнопку отправки.

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

  1. Потоковое видео не требует который много оперативной памяти или процессора, но для этого требуется быстрое хранилище. Допустим, четыре твердотельных накопителя SAS по 400 ГБ в массиве RAID 10 на 800 ГБ полезного пространства для хранения видео. Тем не менее, вы можете захотеть увеличить это количество, если планируете в ближайшие несколько лет иметь гораздо больше видео. Скажем, четыре твердотельных накопителя SAS по 800 ГБ в массиве RAID 10 для полезного пространства 1600 ГБ.
  2. Не экономьте на сетевой карте. Ваша сетевая карта должна поддерживать, как минимум, разгрузку TCP / IP (даже если вы в конечном итоге ее не используете), масштабирование на стороне приема и объединение на стороне приема. Некоторые сетевые карты, например, от Intel, имеют дополнительные функции для повышения производительности. Вы могли бы потратить немного времени на изучение этого.
  3. Хотя вам действительно нужно обратить внимание и убедиться, что сеть вашего сервера настроена и настроена правильно, проблемы с пропускной способностью сети иногда являются ошибкой сетевой инфраструктуры. Если вы находитесь в другом месте и не контролируете это, будьте готовы к спорам со своим центром обработки данных. В частности, убедитесь, что вы не покупаете сетевой порт, скорость которого ограничена до некоторой доли скорости соединения, и что у центра обработки данных действительно более чем достаточно полосы пропускания, чтобы обеспечить вас в часы пик.
  4. ЦП не имеет большого значения, но имеет значение. Веб-сервер не будет использовать много ЦП, но обработка прерываний от сетевой карты может использовать столько же ЦП, сколько и веб-сервер, а возможно и больше. Вам, вероятно, не нужно что-то первоклассное, но и здесь дешево не стоит.
  5. Если вы используете двухпроцессорную систему, вам придется выполнить дополнительную настройку. В такой системе каждый ЦП может получить доступ к половине ОЗУ быстро, а к другой половине - медленнее, и наоборот для другого ЦП. Это называется NUMA, и вам нужно будет следить за узкими местами, связанными с вашим веб-сервером или обработкой прерываний, выполняемой на одном процессоре и обращающейся к памяти с другого. В Linux есть инструменты, которые помогут вам с этим справиться.
  6. Вам не нужно столько оперативной памяти для обслуживания видео, но ваш сервер будет использовать всю оперативную память, которую вы можете ему предоставить, как очень быстрый дисковый кеш. Я думаю, вы вряд ли столкнетесь с узким местом, поэтому я бы начал с малого и при необходимости обновил ОЗУ. 32 ГБ могут стать хорошим началом; 192 ГБ было бы излишним, если бы вы уже не знали, что вам это нужно.
  7. Я бы использовал веб-сервер nginx. Я всегда так делаю, поскольку по умолчанию он намного более способен обрабатывать тысячи одновременных подключений, чем Apache. Однако вам может потребоваться увеличить количество файловых дескрипторов в системе.
  8. Я бы построил это на Red Hat Enterprise Linux 7 и приобретите и сохраните подписку активной в течение всего срока службы сервера. Кроме Подробная документация Red Hat о его распространении и о настройка производительности, и его обширная база знаний, Поддержка Red Hat может помочь вам выявлять и устранять узкие места, когда они появляются, что легко окупается за вход.
  9. Будьте готовы обновить компоненты, если того потребуют обстоятельства. Возможно, вы захотите обновить сетевую карту, ОЗУ или ЦП на основе фактических проблем, обнаруженных после запуска в производство.
  10. Все это предполагает, что вы создаете несколько серверов, и что запросы каким-то образом балансируются между ними. Вы должны построить серверы с большей емкостью, чем им необходимо, чтобы в случае выхода из строя одного из них или его необходимости перезагрузить, обновить и т. Д. Оставшиеся могут занять свободное место.