...
Работа с видеоконтентом относится к высоконагруженным задачамвысоконагруженной задаче, требующих требующей от сервера, на котором установлен WCS, соответствие определенным требованиям.
...
1. Указываем в файле настроек запуска ядра WCS сервера wcs-core.properties размeр Java memory heap размером 1 Гб:
Code Block | ||||
---|---|---|---|---|
| ||||
-Xmx1024M |
...
2. Все современные серверные процеcсоры многоядерные. Проведем нагрузочные тесты, используя только одно CORE core CPU, отключив все остальные. Для этого смотрим текущий статус используемых ядер CPU:
...
Текущий статус после выполнения командыкоманд:
Code Block | ||||
---|---|---|---|---|
| ||||
[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):
- без транскодинга:
Тест | Публикации | Зрители | ||
Количество | Разрешение | Битрейт, кбит/с | Количество | |
1 | 1 | 1280x720 (720p) | 3000 | 50 |
2 | 1 | 854x480 (480p) | 1800 | 70 |
3 | 1 | 640x360 (360p) | 1300 | 70 |
...
При большем количество потоков и зрителей, усложнению бизнес модели проекта, наращивание производительности одного WCS сервера нецелесообразно и ведет к появлению единой точки отказа. Масштабирование, географическое и логическое разделение (с выделением в зависимости от производительности и роли отдельных серверов в CDN для функции функций транскодинга и доставки контента) позволяет на основание основании предложенных и выполненных нами тестов гибко определить необходимый уровень производительности для каждого из WCS серверов.