Нагрузочное тестирование WebRTC

Здравствуйте,
Пробуем использовать WCS5 для веб видео-конференций в качестве webrtc медиа-сервера, цель - тысячи работающих одновременно видео-потоков c одновременным подключением/отключением сотен. Входящие 1-5 потоков от модераторов просматриваются сотнями гостей в одной комнате, комнат с вещанием - десятки. Хотел воспользоваться нагрузочным тестированием WebRTC, как описано в https://habrahabr.ru/company/flashphoner/blog/337670/, но не получилось
Code:
curl -X POST -H "Content-Type: application/json" -d '{"uri":"wss://w01.example.com:8443","remoteStreamName":"Cam","localStreamName":"Cam_edge"}' https://w02.example.com:8888/rest-api/pull/startup
{"timestamp":1507727958201,"status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"Request method 'POST' not supported","path":"/rest-api/pull/startup"}
Когда можно ожидать доступности этих фич в WCS5 ?
В тестовом использовании при 130-140 гостях в комнате 1 поток работал хорошо, 2 потока приводили к всплеску packet loss в chrome://webrtc-internals у гостей и фактическому замиранию обоих потоков, отключение 2-го потока возвращало всё в норму. WCS5 поднимался до ~4000 потоков, запас по CPU/памяти/каналу был 5х. Какие настройки у WCS5 можно покрутить в плане производительности webrtc видео стримов?
 

Max

Administrator
Staff member
Добрый день.
В последних сборках сервера, кроссерверная консоль работает только по HTTP, не по HTTPS.
Поэтому, чтобы запустить нагрузочный тест нужно
1. Выставить в настройках wcs-manager.properties
Code:
-DstartWithDemoUser=true
для того, чтобы можно было использовать прямые ссылки вида
https://wcs5-eu.flashphoner.com/client2/examples/demo/streaming/console/console.html
2. Поднять два сервера, например
https://wcs5-us.flashphoner.com:8888
https://wcs5-eu.flashphoner.com:8888
3. Открыть Dashboard / Demo / Console на одном из серверов
И кликнуть по стрелке 'Share demo link' в правом верхнем углу.
Перейти на такую страницу:
https://wcs5-eu.flashphoner.com/client2/examples/demo/streaming/console/console.html
3. Заменить https на http и порт с 8888 на 9091
http://wcs5-eu.flashphoner.com:9091/client2/examples/demo/streaming/console/console.html
4. Установить и включить Cors для кроссдоменных запросов между двумя серверами (не забыть выключить после тестов).
https://chrome.google.com/webstore/...bi?utm_source=chrome-app-launcher-info-dialog
5. После этого в консоли можно подключиться ко второму серверу и сделать Pull нескольких потоков.
Если все получилось и полосы между серверами хватает, то можно пускать нагрузку.

Скриншоты ниже.
1. webrtc-load-test-tester.jpg
Тестирующий сервер, который тянет потоки на себя.
2. webrtc-load-test-tested.jpg
Тестируемый сервер, который отдает потоки.
3. webrtc-loadtest-cors-enabled.jpg
Как включается Cors расширение в Google Chrome для кроссдоменных запросов.
 

Attachments

Max

Administrator
Staff member
Какие настройки у WCS5 можно покрутить в плане производительности webrtc видео стримов?
1. Настройки управления памятью для ядра.
Применимы, если общей памяти RAM больше чем 12 гигабайт.

WCS_HOME/conf/wcs-core.properties
Code:
-Xms4g
-Xmx8g
-XX:+UseConcMarkSweepGC -XX:NewSize=512m
2. Настройки выделения поротов.
Убедитесь что в этом диапазоне не занимают порты другие сервисы.

WCS_HOME/conf/flashphoner.properties
Code:
media_port_from=30000
media_port_to=39999
3. Настройки ограничения битрейтов

WCS_HOME/conf/flashphoner.properties
Code:
webrtc_cc_max_bitrate=500000
Code:
webrtc_cc_min_bitrate=300000
По-умолчанию битрейт входящего WebRTC потока может разворачиваться до 2Mbps и больше, в зависимости от разрешения.
Эти настройки ограничивают битрейт и не дают раздавать очень тяжелые потоки подписчикам.
 
Top