Эффективная доставка больших файлов через Интернет
В последние несколько недель мы начали передавать все больше и больше видео по http, размером от 50 до 500 МБ каждый, и поскольку у нас не было нового сервера, чтобы использовать его только для этого, я установил его на нашем сервере прямой трансляции.
Коробка неплохая imho (2 x quad на 2 ГГц, 4 ГБ оперативной памяти, 4 x 300 ГБ sas 15k об / мин в hw RAID1, под управлением Linux 2.6, ext3 fs с планировщиком дедлайна, nginx в качестве веб-сервера), но у нас все еще были проблемы с доставкой файлов, в основном я подозреваю, потому что наш iowait составлял от 10 до 45%, а use был около 90% в большинстве случаев, в то время как CPU составлял около 20-30%.
Из того, что я прочитал, должно было быть трафик ~300-400 Мбит / с, но это не так..
Имея ограниченный бюджет, мы не можем полагаться на CDN, но мы можем получить больше вычислительной мощности, если это необходимо, и центр обработки данных может обрабатывать наш трафик.
Теперь у нас есть новый сервер, который должен делать только это, но я не знаю, как лучше настроить его, основные вопросы на данный момент:
- какой уровень рейда больше подойдет для этой задачи? теперь есть 4 x 300 ГБ + 2 x 146 ГБ, оба SAS при 10k об / мин, hw raid, хотели бы больше места, но избыточность также важна
- Как бы я расширил это позже, хорошая идея?
- сколько оперативной памяти ему понадобится, сейчас у него 16 ГБ, но можно добавить еще, если это даст нам приличный прирост, есть ли у вас какие-нибудь советы?
- определился с XFS для файловой системы, что-нибудь против / лучше подходит для этого?
- сколько я могу рассчитывать только на этот 1 сервер?
Любые другие советы приветствуются.
Спасибо.
2 ответа
Я не специалист по такого рода оптимизации, но вот несколько мыслей, которые приходят на ум:
- RAID: обслуживая видео, я думаю, что вы в первую очередь будете выполнять непрерывное чтение. Для этой цели я склонен думать, что RAID1 должен быть в порядке. Конфигурация RAID 1+0 может быть лучше, потому что есть больше возможностей для распараллеливания - хотя я не исследовал цифры по этому вопросу. Вы также можете поиграть с настройками RAID; возможно, больший размер полосы будет лучше для вашей ситуации?
- RAM: Почему бы не начать с того, что у вас есть, а затем контролировать использование? Если вы обнаружите, что сервер делает слишком много подкачки, то вы всегда можете добавить больше оперативной памяти.
Кажется, у вас много вопросов, многие из которых могут ответить сами, как только вы включите новый сервер. Я хотел бы убедиться, что вы можете вернуться к старому серверу, если произойдет что-то катастрофическое, и посмотреть, как работает новый сервер.
Вы говорите нам, что считаете, что должны поддерживать 300-400 Мбит / с, но вы не можете позволить себе использовать CDN? Что-то подозрительно... Во-первых, у вас есть какое-то соединение с каналом связи... что это за соединение? какую скорость он поддерживает? Полоса пропускания выделена или разделена? Я предполагаю, что это первое узкое место в вашей системе задолго до того, как я подумал, что это сервер.
К вашему сведению, пропускная способность центра обработки данных операторского класса составляет около 250 долл. / Мбит / с непрерывно, поэтому даже при устойчивом уровне 100 Мбит / с вы говорите о расходах в 25 тыс. Долл. / Мес. Если вы делаете это, вы можете позволить себе посмотреть CDN.