Прерывание трансляции на origin

Ilya K.

Member
Здравствуйте.
Версия - 5.2.891
ОС-AWS Linux
При воспроизведении не наблюдалось скачка показателей производительности.
Высылаю файл настроек, логи в форме отчета.

Во время работы нашего приложения публикуемый поток начинает показывать черный прямоугольник. Происходит во время нагрузочного тестирования приложения, на сам Web Call Server нагрузка не подаётся.
 

Max

Administrator
Staff member
Добрый день.
Просим в дальнейшем отправлять отчеты, связанные с темой на форуме, при помощи кнопки Report (или ссылки, если мы ее давали) именно в данной теме, но не в другой, поскольку таким образом фиксируется привязка присланных материалов к теме.
Также в дальнейшем просим собирать отчеты, как описано в инструкции, при помощи скрипта report.sh, чтобы мы могли получить информацию о системе.
Что касается Вашего отчета, мы видим остановку публикации потока 114712*****, который был единственным потоком в микшере mixer114712. Остановка произошла из-за закрытия Websocket сессии по таймауту обмена ping-pong пакетами
Code:
09:05:50,623 INFO             WSClients - WSClientsKeepaliveThread-194 Websocket ping/pong timeout us detected. Removing channel and disconnect client. channel: [id: 0x2697c562, /109.110.**.***:15271 => /172.31.**.***:443] client: WSClient{channel=[id: 0x2697c562, /109.110.**.***:15271 => /172.31.**.***:443], handler=com.flashphoner.server.client.handler.DelegateHandler@1b9d6b63, closed=false, pageUrl='null', countUnansweredPing=11} countUnansweredPing: 11
Поток был выведен из микшера, после этого микшер должен был показывать черный квадрат в течение 1 минуты до своего завершения по mixer_idle_timeout=60000, что также зафиксировано в логе
Code:
09:05:51,715 INFO            MixerAgent - DISCONNECT-CLIENT-pool-6-thread-2 Found session with stream name 114712*****, removing from mix
Таким образом, вероятной причиной является проблема с сетью у публикующего клиента. Рекомендуем публиковать потоки с использованием надежных каналов из мест, ближайших к используемому датацентру.
Кроме того, рекомендуем отключить встроенный балансировщик нагрузки WCS, удалив из файла flashphoner.properties все настройки, начинающиеся с load_balancing_, а также файл loadbalancing.xml. Данный функционал устарел и не поддерживается.
 
Вложили ссылку с отчетами, tcpdump'ами, и содержимым iptables с серверов origin и edge
 

Max

Administrator
Staff member
Получили ссылку на файл отчета, разберем его, по результатам отпишем.
В принципе, можно было не создавать новую тему, если проблема та же самая.
 

Max

Administrator
Staff member
Проверили отчет.
Вы используете слишком слабые серверы для тестирования (2 vCPU, 3.7 Gb RAM). При Ваших параметрах микшера (1920x1080) этого недостаточно. Посмотрите, например, эту статью Сколько микшеров может быть на сервере? Нагрузочные тесты в этой статье проводились из расчета 2 ядра CPU на один микшер 720p, для 1080p рекомендуется резервировать 3 ядра на один микшер.
Кроме того, в тестах Вы используете MCU, что добавляет нагрузки процессору в части кодирования аудио потоков.
Также, под Java heap выделено только 512 Mb RAM, что ниже минимального рекомендуемого предела (1 Gb). И для микширования, особенно с записью микшера, рекомендованного минимума также мало.
Выглядит так, что микшер нагружает процессор сервера и не успевает микшировать кадры.
Для edge сервера такой конфигурации также недостаточно, она не выдержит большое число подписчиков.
Рекомендуем использовать более мощные серверы при тестировании и тем более в продакшне.
 
После увеличения количества оперативной памяти, ядер процессора и heap ситуация не изменилась. Такое прекращение трансляции через некоторое, примерно, одинаковое время. Добавил ссылку на аналогичный отчет для edge. Для снятия такого отчета с origin? места не зватило, поэтому добавил доступ ssh
 

Max

Administrator
Staff member
Уточните, пожалуйста, следующее:
1. Что и как именно Вы тестируете:
- тест на количество микшеров на сервере?
- тест на количество потоков в микшере?
- тест на количество подписчиков выходного потока микшера?
2. Что означает прекращение трансляции:
- поток перестает играть, подписчик получает статус FAILED?
- невосстановимый фриз картинки в потоке?
3. В каком именно потоке наблюдается проблема:
- выходной поток микшера?
- публикуемый поток участника?
4. Откуда играете поток:
- с Origin сервера?
- c Edge сервера?
5. Если играете поток с Edge сервера, воспроизводится ли проблема при проигрывании этого же потока в этот же момент с Origin сервера?
6. Есть ли данные по загрузке CPU, памяти, потреблению Java heap во время тестирования (в логах все это не сохраняется)? О том, как собрать метрики и получить графики, смотрите статью 10 важных метрик WebRTC стриминга и настройка мониторинга Prometheus +Grafana
Также мы заметили следующее:
1. Используемая сборка 5.2.903 не содержит некоторых фиксов, касающихся работы микшера под нагрузкой. Рекомендуем обновить сервер до последней сборки с этой страницы
2. Настройки
Code:
decoder_priority=FF,OPENH264
encoder_priority=FF,OPENH264
не имеют смысла, поскольку в комплект поставки сервера входит только библиотека на базе OpenH264 (другой энкодер доступен только для Enterprise клиентов)
3. Не рекомендуется использование TCP внутри CDN (между Origin и Edge узлами), если нет потерь на каналах между ними. Поэтому рекомендуем убрать настройку
Code:
ice_tcp_transport=true
и включать TCP транспорт только для публикующих или играющих клиентов:
Code:
session.createStream({
    name: streamName,
    display: localVideo,
    ...
    transport: "TCP"
}).on(STREAM_STATUS.PUBLISHING, function (stream) {
...
}).publish();
4. При использовании TCP транспорта под нагрузкой может увеличиться расход памяти. Чтобы предотвратить это, рекомендуем использовать настройку
Code:
ice_tcp_nio=false
5. На стороне Edge сервера рекомендуем включить аппаратное ускорение шифрования WebRTC трафика и оптимизацию доставки потока подписчикам, это позволит обработать более число подписчиков на Edge. Примерные возможности конфигураций AWS EC2 смотрите здесь.
 
1. Тестируем с помощью jmeter непосредственно через наше приложение.
Публикуем поток на origin, смотрим через edge. В этот момент подаём нагрузку
2. Черный квадрат примерно минуту, после трансляция прерывается у зрителей. Ещё через минуту-две обрывается у ведущего
3. Сначала прекращается воспроизведение на edge, потом публикация на origin
4.Публикуем на origin, воспроизводим на edge. Нагрузка касается edge.
5.На origin поток так же прерывается со статусом FAILED
6.
Память и CPU
1618907091613.png


Java heap
1618910989855.png

Использование рекомендованных Вами выше настроек проблему не решило
 

Max

Administrator
Staff member
1. Тестируем с помощью jmeter непосредственно через наше приложение.
Публикуем поток на origin, смотрим через edge. В этот момент подаём нагрузку
Воспроизводится ли проблема, если поток смотрит только один пользователь?
Также Вы не уточнили, сколько же микшеров одновременно работает на Origin сервере?
2. Черный квадрат примерно минуту, после трансляция прерывается у зрителей.
По симптомам похоже на остановку микшера из-за нехватки производительности. Фикс был в сборке 5.2.917, поэтому настоятельно рекомендуем обновить сервер до последней сборки с этой страницы.
Ещё через минуту-две обрывается у ведущего
Уточните, пожалуйста: у ведущего останавливается публикация или проигрывание? Какой поток проигрывает ведущий (с Origin или также с Edge), если с Origin, что видно в этом потоке?
Также проверьте, воспроизводится ли проблема, если поток публикуется в примере MCU Client?
Использование рекомендованных Вами выше настроек проблему не решило
Рекомендации касались раздачи потока подписчикам, а проблема у вас на Origin сервере и касается производительности микшера.
Еще раз рекомендуем обновить сервер до последней сборки с этой страницы. Также рекомендуем провести тестирование на Origin по методике, приведенной в статье Сколько микшеров может быть на сервере?, и собрать графики.
Кроме рекомендуем снизить разрешение микшера до используемого по умолчанию (720p) или ниже и проверить, будет ли в этом случае воспроизводиться проблема в Вашем тесте.
 
Top