Нагрузочное тестирование микшера¶
Описание¶
Если сценарий использования сервера предусматривает микширование потоков, возникает необходимость нагрузочного тестирования микшера перед вводом сервера в эксплуатацию. Тестирование проводится следующим образом:
- На сервере публикуется необходимое количество потоков (минимум по одному потоку на микшер)
- Создается указанное количество аудиомикшеров, на вход которым подается заданное количество потоков. Один поток может быть подан на вход только одного микшера.
- Микшеры работают в течение заданного времени, после чего уничтожаются и создаются заново, до окончания тестирования.
В процессе тестирования можно наблюдать за поведением сервера при помощи средств мониторинга.
Для управления тестированием предназначены специальные REST API запросы.
REST API¶
REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:
- HTTP:
http://streaming.flashphoner.com:8081/rest-api/mixer/test/start
- HTTPS:
https://streaming.flashphoner.com:8444/rest-api/mixer/test/start
Здесь:
streaming.flashphoner.com
- адрес WCS-сервера8081
- стандартный REST / HTTP порт WCS-сервера8444
- стандартный HTTPS портrest-api
- обязательный префиксmixer/test/start
- используемый REST-вызов
REST методы¶
/mixer/test/start¶
Запустить тест
Request example¶
POST /mixer/test/start HTTP/1.1
Host: localhost:8081
Content-Type: application/json
{
"feedingStreams": [
"s1",
"s2",
"s3",
"s4"
],
"mixerCount": 2,
"streamsInMixer": 2,
"intervalInSeconds": 60
}
Response example¶
Return codes¶
Code | Reason |
---|---|
200 | OK |
500 | Internal error |
/mixer/test/stop¶
Остановить тест
Request example¶
Response example¶
Return codes¶
Code | Reason |
---|---|
200 | OK |
404 | Mixer not found |
500 | Internal error |
/mixer/test/get_start_example¶
Возвращает пример JSON объекта для вызова /mixer/test/start
Request example¶
POST /mixer/test/get_start_example HTTP/1.1
Host: localhost:8081
Content-Type: application/json
{
"feedingStreams": [
"stream1",
"stream2",
"stream3"
],
"mixerCount": 3,
"streamsInMixer": 1,
"intervalInSeconds": 60
}
Response example¶
Return codes¶
Code | Reason |
---|---|
200 | OK |
500 | Internal error |
Параметры¶
Parameter name |
Description |
Example |
---|---|---|
feedingSteams |
Список опубликованных на сервере потоков, которые будут участвовать в тестировании |
|
mixerCount | Количество создаваемых микшеров | 2 |
streamsInMixer | Количество потоков, направляемых в каждый микшер | 2 |
intervalInSeconds | Интервал в секундах, после которого микшеры уничтожаются и создаются снова | 60 |
Настройка¶
Для тестирования производительности микшера необходимо отключить асинхронное завершение медиасессий (которое работает по умолчанию)
и перезапустить WCS.
По окончании тестирования данную настройку необходимо убрать.
Тестирование¶
-
Для теста используем:
- WCS сервер
- браузер Chrome и REST-клиент для отправки запросов
- веб-приложение
Two Way Streaming
для публикации потоков
-
Опубликуйте потоки с именами
s1
,s2
,s3
,s4
-
Откройте REST-клиент. Отправьте запрос
/mixer/test/start
, указав в параметрах:- список опубликованных потоков:
s1, s2, s3, s4
- количество микшеров:
2
- количество потоков на микшер:
2
- интервал работы микшера:
120
секунд
- список опубликованных потоков:
-
Убедитесь, что микшеры созданы, отправив запрос
/mixer/find_all
Должно быть найдено два микшераmixer0
иmixer1
-
Во время теста можно наблюдать за потреблением ресурсов сервера при помощи Java Mission Control, страниц информации о нагрузке и ресурсах и информации об ошибках, а также серверных логов.
-
Остановите тест, отправив запрос
/mixer/test/stop
Рекомендации по настройке¶
-
Если во время тестирования была выявлена большая загрузка CPU, следуйте рекомендациям по тонкой настройке сервера.
-
Если во время тестирования была выявлена утечка ресурсов, направьте описание теста и собранный отчет на support@flashphoner.com