...
Code Block |
---|
|
dropwatch -l kas
>start |
Настройка буферов UDP на уровне системы
Если на сервере публикуются потоки с высоким битрейтом, и для публикации и проигрывания используется UDP (например, в качестве транспорта внутри CDN), может потребоваться настройка буферов UDP на уровне системы
Code Block |
---|
|
sudo sysctl -w net.core.rmem_max=26214400
sudo sysctl -w net.core.rmem_default=26214400 |
При этом производительности сервера должно хватать для обработки всех поступающих пакетов трафика. В противном случае качество трансляции ухудшится (появятся фризы), но узким местом станет не сеть, а CPU.
Оптимизация загрузки канала
...
Code Block |
---|
|
[Service]
User=flashphoner
Group=flashphoner
LimitNOFILE=100000
... |
Команда для изменения максимального количества открытых файлов
В сборке 5.2.1255 добавлена команда для изменения максимального количества открытых файлов
Code Block |
---|
|
sudo ./webcallserver set-fd-limit 100000 |
При этом WCS будет остановлен перед внесением изменений в настройки и автоматически запущен после внесения изменений.
Если указано меньшее количество, чем значение по умолчанию (20000), будет выведено сообщение об ошибке, и изменения не будут применены.
Шифрование в отдельном потоке для каждой клиентской сессии
По умолчанию, шифрованием трафика для всех клиентских сессий занимается один процессорный поток. Это приводит к тому, что на маломощных серверах при большом количестве подписчиков такой поток нагружает одно процессорное ядро, после чего сервер не успевает рассылать медиапакеты подписчикам, и начинается деградация воспроизводимых потоков, снижение FPS и фризы.
Чтобы распределить нагрузку равномерно по ядрам процессора, необходимо включить шифрование трафика в отдельном процессорном потоке для каждой из клиентских сессий при помощи следующих настроек
Code Block |
---|
|
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 |
---|
|
streaming_distributor_subgroup_enabled=true |
При этом клиентские аудио и видео сессии распределяются по группам.
Максимальное количество видео сессий в группе задается настройкой
Code Block |
---|
|
streaming_distributor_subgroup_size=50 |
Максимальное количество аудио сессий в группе задается настройкой
Code Block |
---|
|
streaming_distributor_audio_subgroup_size=500 |
Размеры очередей пакетов на группу и максимальное время ожидания фрейма для отправки (в миллисекундах) задаются настройками
Code Block |
---|
|
streaming_distributor_subgroup_queue_size=300
streaming_distributor_subgroup_queue_max_waiting_time=5000 |
для видео и
Code Block |
---|
|
streaming_distributor_audio_subgroup_queue_size=300
streaming_distributor_audio_subgroup_queue_max_waiting_time=5000 |
для аудио соответственно.