Документация Flussonic Media Server

Contents

Уменьшение потребления памяти

Уменьшение потребления памяти

Запущенный Flussonic может потреблять огромное количество памяти: до 30 Гигабайт.

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

Так, для протоколов HLS и HDS все сегменты хранятся в памяти и отдаются из неё максимально быстро. При этом Flussonic – фактически один из двух серверов, которые эффективно используют несколько ядер и раздает видео из общей памяти клиентам по ядрам.

Большинство серверов на С не могут работать в многопоточном режиме и требуют записи HLS сегментов на диск. Такое поведение сервера приводит к непредсказуемой скорости отдачи видео с диска, и удачная запись в лог может нарушить вещание прямого эфира. У Flussonic такой проблемы нет за счёт того, что явно используется память для хранения последних секунд потока.

Давайте рассмотрим, какие основные потребители памяти есть в Flussonic.

HDS

Для того, что бы уменьшить расход памяти, проще всего отключить HDS. Без него обойтись можно, а вот HLS лучше оставить:
stream ort {
  url udp://239.0.0.1;
  hds off;
}

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

Prepush

Следующий способ сокращения расходов на память — отключение препуша. Препуш — это кадры в памяти, которые будут посланы клиенту, который только что подключился по протоколу RTMP или HTTP MPEG-TS, и сохранены в буфере на клиенте:
stream ort {
  url udp://239.0.0.1;
  hds off;
  prepush off;
}

Теперь кадры не будут сохраняться в потоке, будут накапливаться только в списке HLS сегментов.