Описание
Возможность захвата потока с другого WCS-сервера по WebRTC может быть полезна для нагрузочного тестирования. Тест проводится по следующему сценарию:
- На сервере 1 публикуется поток
- Сервер 2 создает заданное количество соединений (например, 100) с сервером 1 по Websocket, как браузерный клиент
- Сервер 2 захватывает поток в заданном количестве экземпляров, как зритель, создавая нагрузку на сервер 1.
Тестирование
1. Для теста используем:
- два WCS-сервера: demo.flashphoner.com и wcs5-us.flashphoner.com;
- веб-приложение Two Way Streaming для публикации потока;
- веб-приложение Console для проведения теста;
- браузер Chrome и расширение Allow-Control-Allow-Origin для работы веб-приложения Console.
2. Откройте приложение Console через HTTP (не через HTTPS!) http://demo.flashphoner.com:9091/client2/examples/demo/streaming/console/console.html
3. Установите расширение ACAO, разрешите Cross-Origin-Resource-Sharing
4. Введите имя сервера wcs5-us.flashphoner.com и нажмите 'Add node'. Данный сервер будет выполнять роль подписчика, захватывая потоки. Затем аналогично добавьте сервер demo.flashphoner.com, который будет выполнять роль тестируемого источника потоков.
5. Откройте приложение Two Way Streaming https://demo.flashphoner.com/client2/examples/demo/streaming/two_way_streaming/two_way_streaming.html, опубликуйте поток с веб-камеры
6. В приложении Console выберите сервер wcs5-eu.flashphoner.com, нажмите кнопку 'Pull streams', задайте параметры теста:
- Choose node - выберите тестируемый сервер demo.flashphoner.com
- Local stream name, Remote stream name - укажите имя опубликованного потока
- Qty - укажите количество зрителей (например, 100)
7. Нажмите 'Pull'. Начнется тест.
8. Выберите сервер demo.flashphoner.com. На странице отображается список медиасессий, в которых воспроизводится опубликованный поток. В правом верхнем углу отображается информация о текущей нагрузке тестируемого сервера.
Тестирование Edge сервера в CDN
Тестирование Edge сервера в CDN проводится по следующему сценарию:
- На Origin сервере публикуются потоки
- Тестирующий сервер создает заданное количество соединений (например, 100) с сервером Edge по Websocket, как браузерный клиент
- Тестирующий сервер захватывает потоки, доступные Edge серверу, в заданном количестве экземпляров, как зритель, создавая нагрузку на сервер Edge и на CDN в целом, в части передачи потока с Origin на Edge.
Краткое руководство по тестированию Edge сервера
1. Для теста используем:
- два WCS-сервера для развертывания CDN: test1.flashphoner.com и test2.flashphoner.com;
- WCS-сервер для проведения теста demo.flashphoner.com
- веб-приложение Two Way Streaming для публикации потока;
- веб-приложение Console для проведения теста;
- браузер Chrome и расширение Allow-Control-Allow-Origin для работы веб-приложения Console.
2. Разверните CDN, назначив серверам роли:
- test1 - Origin
- test2 - Edge
На Edge сервере добавьте настройку
wcs_activity_timer_timeout=86400000
3. Откройте приложение Console через HTTP (не через HTTPS!) http://demo.flashphoner.com:9091/client2/examples/demo/streaming/console/console.html
4. Разрешите Cross-Origin-Resource-Sharing
5. Введите имя Edge сервера test2.flashphoner.com и нажмите 'Add node'. Данный сервер будет тестироваться. Затем аналогично добавьте сервер demo.flashphoner.com, который будет выполнять роль подписчика, захватывая потоки.
6. Откройте приложение Two Way Streaming, опубликуйте поток с веб-камеры
7. В приложении Console выберите сервер demo.flashphoner.com, нажмите кнопку 'Stress play stream', задайте параметры теста:
- Choose node - выберите тестируемый сервер test2.flashphoner.com
- Choose test mode - Random
- CDN - установите переключатель
- Max streams - укажите количество зрителей (например, 100)
7. Нажмите 'Start'. Начнется тест.
Рекомендации по настройке
Если тест не был пройден успешно, рекомендуется на тестируемом сервере изменить следующие настройки:
1. В файле flashphoner.properties расширить диапазон UDP-портов и запретить быстрый старт декодера
media_port_from = 20000 media_port_to = 39999 streaming_video_decoder_fast_start=false
2. В файле wcs-core.properties увеличить предельный размер памяти для кучи. Рекомендуется задавать этот размер в половину физической памяти, например, 16 Гб при объеме физической памяти в 32 Гб. Убедитесь, что памяти на сервер достаточно для этого:
-Xmx16g -Xms16g
Известные проблемы
1. По умолчанию, захватывается не более 1000 потоков
Симптомы: при указании количества зрителей более 1000, захватывается 998 потоков
Решение: по умолчанию, максимальное количество портов агентов ограничено 999:
wcs_agent_port_from=34001 wcs_agent_port_to=35000
Для расширения данного ограничения, необходимо увеличить значение
wcs_agent_port_to=35000
в файле flashphoner.properties.