Нагрузочное тестирование микшера¶
Описание¶
Если сценарий использования сервера предусматривает микширование потоков, возникает необходимость нагрузочного тестирования микшера перед вводом сервера в эксплуатацию. Тестирование проводится следующим образом:
- На сервере публикуется необходимое количество потоков (минимум по одному потоку на микшер)
- Создается указанное количество аудиомикшеров, на вход которым подается заданное количество потоков. Один поток может быть подан на вход только одного микшера.
- Микшеры работают в течение заданного времени, после чего уничтожаются и создаются заново, до окончания тестирования.
В процессе тестирования можно наблюдать за поведением сервера при помощи средств мониторинга.
Для управления тестированием предназначены специальные 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