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

Андрей Василишин a.vasilishin на kpi.ua
Пн Окт 24 12:21:04 UTC 2011


24.10.2011 15:10, Gena Makhomed пишет:
> 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" разве есть какая-то разница,
> с того же самого винта будет отдаваться следующий фрагмент файла,
> или с другого винта? всеравно между этими двумя запросами винт успеет
> выполнить десятки или даже сотни других запросов на чтение фрагментов
> других файлов. если я не ошибаюсь, нормальный рейд выбирает наименее
> загруженный запросами винт, чтобы равномерно распределить запросы
> на чтение по всем компонентам массива. и это по идее должен быть
> самый оптимальный вариант массива для увеличения производительности.

Вы не забывайте про seek'и, что лучше чтобы один клиент сикал по одному 
диску или по 10-ти сразу, а если таких клиентов 3000, что будет?

>
>> однозначно будет хуже в момент записи, так как запись идет
>> одновременно на все веники,
>
> если запись происходит часто и это вызывает какие-то проблемы -
> тогда писать новые файлы на массив можно с низким приоритетом
> (man ionice), чтобы не создавать этим каких-то проблем операциям чтения.
>
>> остальные рейды проигрывают однозначно.
>
> не все так однозначно. в случае если используются не HDD,
> а SSD более производительным вариантом массива в некоторых
> случаях будет raid0, потому что для SSD дисков seek time == 0.
> а если для SSD надо и производительность и надежность - то raid10.
>
>> По поводу неравномерной нагрузки - да такое бывает, обычно самые
>> популярные
>> файлы попадают в кеш ОС, если даже и этого не хватает, у меня на этот
>> случай есть скрипт, который перенесет часть активных файлов на другие,
>> менее нагруженные веники, для 1-но гигабитных серверов с 6-ю вениками
>> случаи перегрузки одного веника крайне редки, быстрее все же упирается в
>> канал. Скрипт используется в частности на 5-ти гбитном сервере с 8-ю
>> вениками и даже не по крону или как демон, так как случаи все равно
>> довольно редки.
>
> это наверное потому, что нет очень популярных (больших) файлов
> и нагрузка распределяется более-менее равномерно по всем винтам.
>
> в любом случае, отдавать какой-то файл одновременно с N винтов -
> это будет более производительный вариант, чем отдавать его с одного
> единственного винта. и как минимум для стриминга где бывают очень
> популярные файлы, к которым большое количество обращений - вариант
> raid1 может оказаться лучше, чем "независимые винты" и try_files.
>

Раз не верите мне, то поверьте тогда Игорю, он производил тестирование
Для себя я когда-то перешел с рейд5 на стендэлон и увидел выигрыш в 2 
раза. Все вот эти картинки производительности рейдов 
http://www.timcompany.ru/article4.html актуальны только для домашних или 
слабонагруженных систем.
-- 
WBR, Andrey Vasilishin CDIG1-UANIC, CDIG1-RIPE



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