Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

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

...

  • виртуальный (VPS) или физический сервер (если его нет у вас, можно воспользоваться выделяемым сервером, например на ресурсах packet.com или paperspace.com)
  • источник видео трансляции (потоковое видео с программ OBS studio или ManyCam, трансляция с вашей web или IP-камеры)
  • сервер WCS для эмуляции зрителей вашего контента (для теста можно воспользоваться нашим тестовым сервером demo.flashphoner.com)

Проверим возможности Linux x86_64 сервера с производительностью, соответствующей минимальным требованиям для WCS:

...

 1. Указываем в файле настроек запуска ядра WCS сервера wcs-core.properties размeр размер Java memory heap размером 1 ГбGB:

Code Block
languagebash
themeRDark
-Xmx1024M

...

2. Все современные серверные процеcсоры процессоры многоядерные. Проведем нагрузочные тесты, используя только одно CORE core CPU, отключив все остальные. Для этого смотрим текущий статус используемых ядер CPU:

...

Текущий статус после выполнения командыкоманд:

Code Block
languagebash
themeRDark
[root@p16root@demo ~]# lscpu | grep list
On-line CPU(s) list:   3
Off-line CPU(s) list:  0-2

Для теста используем 1 CPU Intel Xeon E3-1240 v5@3.50GHz.

Проведение теста

Тест с

...

транскодированием потока

1. Публикуем RTMP поток с определенными параметрами качества из программы OBS Studio на WCS сервер (пример указан в документации):.

РазрешениеБитрейт, кбит/с
1280x720 (720p)1500

...

2. Транскодируем этот поток с помощью REST запросов в несколько популярных разрешений (480p и 360p:).

РазрешениеБитрейт, кбит/с
854x480 (480p)1000
640x360 (360p)500


3. Используем пример нагрузочного тестирования с захватом потоков по WebRTC на другом сервере WCS. Этим примером мы эмулируем зрителей (подписчиков (зрителей) трансляции, воспроизводящих поток в разных разрешениях (720p, 480p, 360p). При заданном числе зрителей (около 100) нагрузка процессора на WCS сервере с WCS приближается к 80%, это рекомендуемая максимальная нагрузка на CPU, при которой сервер выполняет свой функционал корректно.

...

4. Публикуем два потока 720p, транскодируем их в разрешения 480p и 360p, добавляем в нагрузочное тестирование и по загрузке процессора на сервере с WCS (как описано выше, допустимо до 80%) определяем максимальное количество подписчиков на эти трансляции (около 80).


5. Аналогично выполняем выполнив тест с тремя потоками 720p, получаем возможное число зрителей около 30.

...

1. В этом тесте проверим, сколько зрителей получит возможность просмотра трансляции без транскодирования потока на сервере, т.е. публикуем RTMP поток с определенными параметрами качества из программы OBS Studio на WCS сервер (пример указан в документации) и просматриваем его же подписчиками.

РазрешениеБитрейт, кбит/с
1280x720 (720p)1500


2. Используем пример нагрузочного тестирования с  с захватом потоков по WebRTC на другом сервере WCS. Этим примером мы эмулируем зрителей (подписчиков (зрителей) трансляции, воспроизводящих поток с WCS сервера. Увеличиваем число зрителей до достижения на WCS сервере параметров загрузки процессора до 80%. При просмотре трансляции 720p мы получили возможное число зрителей потока - 120 подписчиков.

...

4. Проверим возможности сервера при трансляции 360p и нагрузочным тестом:.

РазрешениеБитрейт, кбит/с
640x360 (360p)500



Результаты тестирования

Физический сервер

На основание основании теста с минимально рекомендуемой конфигурацией (1 CPU, 2 GB RAM, 1 Gb GB RAM для Java heap) на выделенном (физическом) сервере, определили примерные возможности WCS по работе с потоковым видео на таком сервере:

...


Без транскодинга

...

Тест

Публикации

Зрители

Количество

РазрешениеБитрейт, кбит/сКоличество
111280x720 (720p)1500120
21854x480 (480p)1000150
31640x360 (360p)500250

...


С транскодингом

...


Тест
ПубликацииЗрители
КоличествоРазрешение Битрейт, кбит/сРазрешениеБитрейт, кбит/сКоличество

1

1

1280x720 (720p)

1500

854x480 (480p)100050
640x360 (360p)50050


2

11280x720 (720p)1500854x480 (480p)100020
640x360 (360p)50020
11280x720 (720p)1500854x480 (480p)100020
640x360 (360p)50020




3

11280x720 (720p)1500854x480 (480p)10005
640x360 (360p)5005
11280x720 (720p)1500854x480 (480p)10005
640x360 (360p)5005
11280x720 (720p)1500854x480 (480p)10005
640x360 (360p)5005

Виртуальный сервер

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

Результаты тестов с минимально рекомендуемой конфигурацией (1 CPU, 2 Gb RAM, 1 GB RAM для Java heap) на виртуальном сервере от Digital Ocean (digitalocean.com):

...


Без транскодинга

...

Тест

Публикации

Зрители

Количество

РазрешениеБитрейт, кбит/сКоличество
111280x720 (720p)3000
70
50
21854x480 (480p)180070
31640x360 (360p)130070


С транскодингом


Тест
Публикации
КоличествоРазрешение Битрейт, кбит/с

1

2

1280x720 (720p)

3000

2

3854x480 (480p)1800
35640x360 (360p)1300

Сервер в облаке (на примере AWS)

Тесты на серверах в облаке Amazon (виртуальных и физических) проводились с применением следующих настроек

1. Включено аппаратное ускорение шифрования WebRTC трафика

2. Включена оптимизация доставки потока подписчикам

На тестируемом сервере был опубликован поток 1080p с битрейтом 2,2 Мбит/с, без значительных скачков битрейта.

Были получены следующие результаты:

Тип инстансаCPUsRAM, GbBandwidth, GbpsКоличество подписчиков
c5.4xlarge1632до 101500
c5.9xlarge3672102000 (предел пропускной способности сети)
c5n.9xlarge3696503000

Рекомендации

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

Количество подписчиковCPUsRAM, GbТрафик, TbПример использования
до 200485Система видеонаблюдения
до 5008166Вебинары
до 100016649Видеочат
до 2000209610Стриминг HD видео

При большем количество потоков и зрителей, усложнению бизнес модели проекта, наращивание производительности одного WCS сервера нецелесообразно и ведет к появлению единой точки отказа. Масштабирование, географическое и логическое разделение (с выделением в зависимости от производительности и роли отдельных серверов в CDN функций транскодинга и доставки контента) позволяет на основании предложенных и выполненных нами тестов гибко определить необходимый уровень производительности для каждого из WCS серверов.