Описание

Если сценарий использования сервера предусматривает микширование потоков, возникает необходимость нагрузочного тестирования микшера перед вводом сервера в эксплуатацию. Тестирование проводится следующим образом:

  1. На сервере публикуется необходимое количество потоков (минимум по одному потоку на микшер)
  2. Создается указанное количество аудиомикшеров, на вход которым подается заданное количество потоков. Один поток может быть подан на вход только одного микшера.
  3. Микшеры работают в течение заданного времени, после чего уничтожаются и создаются заново, до окончания тестирования.

В процессе тестирования можно наблюдать за поведением сервера при помощи средств мониторинга.

Для управления тестированием предназначены специальные REST API запросы.

REST-вызовы

REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:

Здесь:

REST-вызовы и статусы ответа

REST-метод

Пример тела REST-запроса

Пример ответа

Статусы ответа

Описание

/mixer/test/start

{
    "feedingStreams": [
        "s1",
        "s2",
        "s3",
        "s4"
    ],
    "mixerCount": 2,
    "streamsInMixer": 2,
    "intervalInSeconds": 60
}


200 - OK

500 - Internal error

Запускает тест, создавая два микшера, в каждый из которых вводятся два потока. Через 60 секунд микшеры уничтожаются

/mixer/test/stop

{
}

200 - OK

404 - Mixer not found

500 - Internal error

Останавливает тест

/mixer/test/get_start_example


{
    "feedingStreams": [
        "stream1",
        "stream2",
        "stream3"
    ],
    "mixerCount": 3,
    "streamsInMixer": 1,
    "intervalInSeconds": 60
}

200 - OK

500 - Internal error

Возвращает пример JSON-объекта, передаваемого на вход методу /mixer/test/start

Параметры

Имя параметра

Описание

Пример

feedingSteams

Список опубликованных на сервере потоков, которые будут участвовать в тестировании
["s1","s2","s3","s4"]
mixerCountКоличество создаваемых микшеров2
streamsInMixerКоличество потоков, направляемых в каждый микшер2
intervalInSecondsИнтервал в секундах, после которого микшеры уничтожаются и создаются снова60

Настройка

Для тестирования производительности микшера необходимо отключить асинхронное завершение медиасессий (которое работает по умолчанию)

handler_async_disconnect=false

и перезапустить WCS.

По окончании тестирования данную настройку необходимо убрать.

Тестирование

1. Для теста используем:

2. Опубликуйте потоки с именами s1, s2, s3, s4

3. Откройте REST-клиент. Отправьте запрос /mixer/test/start, указав в параметрах:

4. Убедитесь, что микшеры созданы, отправив запрос /mixer/find_all

Должно быть найдено два микшера mixer0 и mixer1

5. Во время теста можно наблюдать за потреблением ресурсов сервера при помощи Java Mission Control, страниц информации о нагрузке и ресурсах и информации об ошибках, а также серверных логов.

6. Остановите тест, отправив запрос /mixer/test/stop

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

1. Если во время тестирования была выявлена большая загрузка CPU, следуйте рекомендациям по тонкой настройке сервера.

2. Если во время тестирования была выявлена утечка ресурсов, направьте описание теста и следующие файлы на адрес support@flashphoner.com: