Нагрузочное тестирование с использованием захвата потоков по WebRTC/RTMP¶
Описание¶
Возможность захвата потока с другого WCS-сервера по WebRTC может быть полезна для нагрузочного тестирования. Тест проводится по следующему сценарию:
- На сервере 1 публикуется поток
- Сервер 2 создает заданное количество соединений (например, 100) с сервером 1 по Websocket, как браузерный клиент
- Сервер 2 захватывает поток в заданном количестве экземпляров, как зритель, создавая нагрузку на сервер 1.
Тестирование¶
-
Для теста используем:
- два WCS-сервера:
demo.flashphoner.com
иwcs5-us.flashphoner.com
; - веб-приложение Two Way Streaming для публикации потока;
- веб-приложение Console для проведения теста;
- браузер Chrome и расширение Allow-Control-Allow-Origin для работы веб-приложения Console.
- два WCS-сервера:
-
Откройте приложение Console через HTTP (не через HTTPS!) http://demo.flashphoner.com:9091/client2/examples/demo/streaming/console/console.html
-
Установите расширение ACAO, разрешите Cross-Origin-Resource-Sharing
-
Введите имя сервера
wcs5-us.flashphoner.com
и нажмитеAdd node
. Данный сервер будет выполнять роль подписчика, захватывая потоки. Затем аналогично добавьте серверdemo.flashphoner.com
, который будет выполнять роль тестируемого источника потоков
-
Откройте приложение
Two Way Streaming
https://demo.flashphoner.com/client2/examples/demo/streaming/two_way_streaming/two_way_streaming.html, опубликуйте поток с веб-камеры
-
В приложении
Console
выберите серверwcs5-us.flashphoner.com
, нажмите кнопкуPull streams
, задайте параметры теста:Choose node
: выберите тестируемый серверdemo.flashphoner.com
Local stream name
,Remote stream name
: укажите имя опубликованного потокаQty
: укажите количество зрителей (например,100
)
-
Нажмите
Pull
. Начнется тест
-
Выберите сервер
demo.flashphoner.com
. На странице отображается список медиасессий, в которых воспроизводится опубликованный поток. В правом верхнем углу отображается информация о текущей нагрузке тестируемого сервера
Тестирование Edge сервера в CDN¶
Тестирование Edge сервера в CDN проводится по следующему сценарию:
- На Origin сервере публикуются потоки
- Тестирующий сервер создает заданное количество соединений (например, 100) с сервером Edge по Websocket, как браузерный клиент
- Тестирующий сервер захватывает потоки, доступные Edge серверу, в заданном количестве экземпляров, как зритель, создавая нагрузку на сервер Edge и на CDN в целом, в части передачи потока с Origin на Edge.
Краткое руководство по тестированию Edge сервера¶
-
Для теста используем:
- два WCS-сервера для развертывания CDN:
test1.flashphoner.com
иtest2.flashphoner.com
; - WCS-сервер для проведения теста
demo.flashphoner.com
; - веб-приложение Two Way Streaming для публикации потока;
- веб-приложение Console для проведения теста;
- браузер Chrome и расширение Allow-Control-Allow-Origin для работы веб-приложения
Console
.
- два WCS-сервера для развертывания CDN:
-
Разверните CDN, назначив серверам роли:
- test1 - Origin
- test2 - Edge
На Edge сервере добавьте настройку
-
Откройте приложение
Console
через HTTP (не через HTTPS!) http://demo.flashphoner.com:9091/client2/examples/demo/streaming/console/console.html
-
Разрешите Cross-Origin-Resource-Sharing
-
Введите имя Edge сервера
test2.flashphoner.com
и нажмитеAdd node
. Данный сервер будет тестироваться. Затем аналогично добавьте серверdemo.flashphoner.com
, который будет выполнять роль подписчика, захватывая потоки
-
Откройте приложение
Two Way Streaming
, опубликуйте поток с веб-камеры
-
В приложении
Console
выберите серверdemo.flashphoner.com
, нажмите кнопкуStress play stream
, задайте параметры теста:Choose node
: выберите тестируемый серверtest2.flashphoner.com
Choose test mode
:Random
CDN
: установите переключательMax streams
: укажите количество зрителей (например,100
)
-
Нажмите
Start
. Начнется тест
Захват потоков по RTMP¶
В сборке 5.2.767 добавлена возможность захвата потоков при нагрузочном тестировании по RTMP. Чтобы такой тест работал, необходимо в настройках тестирующего сервера указать параметр
В конфигурации теста необходимо выбрать Proto pull: RTMP
Сам тест работает так же, как WebRTC-тест
Рекомендации по настройке¶
Если тест не был пройден успешно, рекомендуется на тестируемом сервере изменить следующие настройки:
-
В файле flashphoner.properties расширить диапазон UDP-портов и запретить быстрый старт декодера
-
В файле wcs-core.properties увеличить предельный размер памяти для кучи. Рекомендуется задавать этот размер в половину физической памяти, например, 16 Гб при объеме физической памяти в 32 Гб. Убедитесь, что памяти на сервер достаточно для этого:
Известные проблемы¶
1. По умолчанию, захватывается не более 1000 потоков¶
Bug
При указании количества зрителей более 1000, захватывается 998 потоков