Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

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

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

Для выполнения теста вам потребуется:

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

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

  • 2 гигабайта оперативной памяти
  • 10 гигабайт места на диске
  • 1 ядро процессора

Подготовка сервера

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

-Xmx1024M

Затем перезапускаем WCS.

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

[root@demo ~]# lscpu | grep list 
On-line CPU(s) list: 0-3

По выводу видим, что на данном сервере 4 core CPU (0,1,2,3). Отключаем все ядра, кроме четвертого:


echo 0 | sudo tee /sys/devices/system/cpu/cpu0/online
echo 0 | sudo tee /sys/devices/system/cpu/cpu1/online
echo 0 | sudo tee /sys/devices/system/cpu/cpu2/online

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

[root@p16 ~]# 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 приближается к 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 подписчиков.


3. Повторяем тест с трансляцией 480p и нагрузочным тестом с захватом потоков на другом сервере WCS.

РазрешениеБитрейт
854x480 (480p)1000 Кбит/с



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

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



Результаты

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

На основание теста с минимально рекомендуемой конфигурацией (1 CPU, 1 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, 1 Gb RAM) на виртуальном сервере от Digital Ocean:


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


Тест

Публикации

Зрители

Количество

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



  • No labels