Versions Compared

Key

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

...

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

...

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

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.

...

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

...

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

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

...

Результаты

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

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

...

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


  • без транскодинга:


Тест

Публикации

Зрители

Количество

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

...

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