Перейти к содержанию

Нагрузочное тестирование с использованием захвата потоков по WebRTC/RTMP

Описание

Возможность захвата потока с другого WCS-сервера по WebRTC может быть полезна для нагрузочного тестирования. Тест проводится по следующему сценарию:

  1. На сервере 1 публикуется поток
  2. Сервер 2 создает заданное количество соединений (например, 100) с сервером 1 по Websocket, как браузерный клиент
  3. Сервер 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-us.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 проводится по следующему сценарию:

  1. На Origin сервере публикуются потоки
  2. Тестирующий сервер создает заданное количество соединений (например, 100) с сервером Edge по Websocket, как браузерный клиент
  3. Тестирующий сервер захватывает потоки, доступные 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)
  8. Нажмите Start. Начнется тест

Захват потоков по RTMP

В сборке 5.2.767 добавлена возможность захвата потоков при нагрузочном тестировании по RTMP. Чтобы такой тест работал, необходимо в настройках тестирующего сервера указать параметр

rtmp_pull_allow_to_reuse_uri=true

В конфигурации теста необходимо выбрать Proto pull: RTMP

Сам тест работает так же, как WebRTC-тест

Рекомендации по настройке

Если тест не был пройден успешно, рекомендуется на тестируемом сервере изменить следующие настройки:

  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 потоков

Bug

При указании количества зрителей более 1000, захватывается 998 потоков

Success

По умолчанию, максимальное количество портов агентов ограничено 999:

wcs_agent_port_from=34001
wcs_agent_port_to=35000
Для расширения данного ограничения, необходимо увеличить значение
wcs_agent_port_to=35000