Работа с видеоконтентом относится к высоконагруженным задачам, требующих от сервера, на котором установлен 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 CPU, 1 Gb RAM для Java heap) на выделенном (физическом) сервере, определили примерные возможности WCS по работе с потоковым видео на таком сервере:
Одна публикация 720p - транскодинг в 480p, 360p - 100 зрителей |