Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagebash
themeRDark
dropwatch -l kas
>start

Настройка буферов UDP на уровне системы

Если на сервере публикуются потоки с высоким битрейтом, и для публикации и проигрывания используется UDP (например, в качестве транспорта внутри CDN), может потребоваться настройка буферов UDP на уровне системы

Code Block
languagebash
themeRDark
sudo sysctl -w net.core.rmem_max=26214400
sudo sysctl -w net.core.rmem_default=26214400

При этом производительности сервера должно хватать для обработки всех поступающих пакетов трафика. В противном случае качество трансляции ухудшится (появятся фризы), но узким местом станет не сеть, а CPU.

Оптимизация загрузки канала

...

В отличие от скрипта запуска webcallserver,  файл setenv.sh при последующих обновлениях не перезаписывается, таким образом, нет необходимости при каждом обновлении восстанавливать эту настройку.

Использование параметров сервиса при запуске от непривилегированного пользователя (начиная со сборки 5.2.801)

Начиная со сборки 5.2.801, WCS запускается от пользователя 'flashphoner' для большей безопасности. В этом случае изменение максимального количества открытых файлов возможно в параметрах сервиса

Code Block
languagebash
themeRDark
sudo nano /etc/systemd/system/webcallserver.service

Количество открытых файлов задается параметром LimitNOFILE, например

Code Block
themeRDark
[Service]
User=flashphoner
Group=flashphoner
LimitNOFILE=100000
...

Команда для изменения максимального количества открытых файлов

В сборке 5.2.1255 добавлена команда для изменения максимального количества открытых файлов

Code Block
languagebash
themeRDark
sudo ./webcallserver set-fd-limit 100000

При этом WCS будет остановлен перед внесением изменений в настройки и автоматически запущен после внесения изменений.

Если указано меньшее количество, чем значение по умолчанию (20000), будет выведено сообщение об ошибке, и изменения не будут применены.

Шифрование в отдельном потоке для каждой клиентской сессии

По умолчанию, шифрованием трафика для всех клиентских сессий занимается один процессорный поток. Это приводит к тому, что на маломощных серверах при большом количестве подписчиков такой поток нагружает одно процессорное ядро, после чего сервер не успевает рассылать медиапакеты подписчикам, и начинается деградация воспроизводимых потоков, снижение FPS и фризы.

Чтобы распределить нагрузку равномерно по ядрам процессора, необходимо включить шифрование трафика в отдельном процессорном потоке для каждой из клиентских сессий при помощи следующих настроек

Code Block
themeRDark
rtp_paced_sender=true
rtp_paced_sender_initial_rate=200000
rtp_paced_sender_increase_interval=50
rtp_paced_sender_k_up=0.9

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

Оптимизация доставки потока подписчикам

При большом количестве подписчиков на один поток (от 100 и более) качество воспроизведения потока может падать: низкий FPS, фризы. При этом нагрузочной способности сервера и канала может быть достаточно. В таких случаях рекомендуется включить распределение доставки потока подписчикам по процессорным потокам при помощи настройки

Code Block
themeRDark
streaming_distributor_subgroup_enabled=true

При этом клиентские аудио и видео сессии распределяются по группам.

Максимальное количество видео сессий в группе задается настройкой

Code Block
themeRDark
streaming_distributor_subgroup_size=50

Максимальное количество аудио сессий в группе задается настройкой 

Code Block
themeRDark
streaming_distributor_audio_subgroup_size=500

Размеры очередей пакетов на группу и максимальное время ожидания фрейма для отправки (в миллисекундах) задаются настройками

Code Block
themeRDark
streaming_distributor_subgroup_queue_size=300
streaming_distributor_subgroup_queue_max_waiting_time=5000

для видео и 

Code Block
themeRDark
streaming_distributor_audio_subgroup_queue_size=300
streaming_distributor_audio_subgroup_queue_max_waiting_time=5000

для аудио соответственно.