Re: Сильная нагрузка на сервер- стриминг FLV

Gena Makhomed gmm на csdoc.com
Пн Окт 24 12:10:52 UTC 2011


On 24.10.2011 14:44, Андрей Василишин wrote:

>> по какой причине этот вариант "почти рейд1" реализованный
>> скриптами и через try_files будет лучше нормального raid1 ?
>>
>> есть ли данные экспериментов linux mdraid + XFS + flv streaming,
>> которые подтверждают, что "независимые" винты будут лучше raid1
>> (нормального (не глючного) програмного или нормального аппаратного)?
>>
>> когда этот вариант будет хуже - я уже писал, если какой-то файл
>> становится очень популярным, то винт с ним становится перегруженным
>> запросами, а все остальные винты при этом будут практически простаивать,
>> и суммарная производительность сервера будет меньше, чем могла бы быть в
>> случае использования нормального, а не "самодельного" raid1 массива.
>>
>> кстати, в raid1 массиве не обязательно должно быть всего 2 винта.
>> вполне может быть 2, 3, 4, 5, 6, 7, ... с соответствующим ростом
>> производительности массива raid1 при множественных random read.

> За рейд1 точно не скажу, потому что не помню как там куски файла
> отдаются одному клиенту - всегда с одного диска или попеременно с разных
> дисков,

для варианта нагрузки "random read" разве есть какая-то разница,
с того же самого винта будет отдаваться следующий фрагмент файла,
или с другого винта? всеравно между этими двумя запросами винт успеет
выполнить десятки или даже сотни других запросов на чтение фрагментов
других файлов. если я не ошибаюсь, нормальный рейд выбирает наименее 
загруженный запросами винт, чтобы равномерно распределить запросы
на чтение по всем компонентам массива. и это по идее должен быть
самый оптимальный вариант массива для увеличения производительности.

> однозначно будет хуже в момент записи, так как запись идет
> одновременно на все веники,

если запись происходит часто и это вызывает какие-то проблемы -
тогда писать новые файлы на массив можно с низким приоритетом
(man ionice), чтобы не создавать этим каких-то проблем операциям чтения.

> остальные рейды проигрывают однозначно.

не все так однозначно. в случае если используются не HDD,
а SSD более производительным вариантом массива в некоторых
случаях будет raid0, потому что для SSD дисков seek time == 0.
а если для SSD надо и производительность и надежность - то raid10.

> По поводу неравномерной нагрузки - да такое бывает, обычно самые популярные
> файлы попадают в кеш ОС, если даже и этого не хватает, у меня на этот
> случай есть скрипт, который перенесет часть активных файлов на другие,
> менее нагруженные веники, для 1-но гигабитных серверов с 6-ю вениками
> случаи перегрузки одного веника крайне редки, быстрее все же упирается в
> канал.  Скрипт используется в частности на 5-ти гбитном сервере с 8-ю
> вениками и даже не по крону или как демон, так как случаи все равно
> довольно редки.

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

в любом случае, отдавать какой-то файл одновременно с N винтов -
это будет более производительный вариант, чем отдавать его с одного 
единственного винта. и как минимум для стриминга где бывают очень 
популярные файлы, к которым большое количество обращений - вариант
raid1 может оказаться лучше, чем "независимые винты" и try_files.

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru