Оптимизация конфигурации для WebRTC

quizy.pro

New Member
Здравствуйте!

Мы на нашем проекте используем WCS 5.2.567. У нас сервера примерно одинаковой конфигурации: 2 × Intel Xeon E5-2630v3 2.4 ГГц (всего 16 ядер получается), 64 ГБ DDR4. Мы тестировали через консоль админки WCS, просто вытягивая потоки. 360p без транскодинга получалось максимум 450 исходящих при одном входящем, потом видео начинает тормозить и появляется рассинхрон со звуком. Судя по документации на такой железке должно получаться до 1000 держать. Есть предположение, что мы что-то не так настроили, к тому же, мы добавляли много опций просто наугад. И еще, у нас сервера на Ubuntu 18, есть ли смысл пробовать CentOS? Ниже настройки, которые мы меняли:

Flashphoner.properties
...

#codecs
codecs =opus,alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,h264,vp8,flv,mpv
codecs_exclude_sip =mpeg4-generic,flv,mpv
codecs_exclude_streaming =flv,telephone-event
codecs_exclude_sip_rtmp =opus,g729,g722,mpeg4-generic,vp8,mpv

#websocket ports
ws.port =8080
wss.port =8443

#added
cpu_load_avg_size=50
streaming_distributor_queue_size = 1000
streaming_processor_queue_size = 1000
rtp_receive_buffer_size=13107200
rtp_send_buffer_size =13107200
webrtc_cc2_twcc=false
streaming_video_decoder_fast_start=false
webrtc_cc_min_bitrate=500000
webrtc_cc_max_bitrate=1500000
webrtc_aes_crypto_provider=JCE
disable_rest_requests=true
rest_max_connections=1000
transcoding_disabled=true
enable_extended_logging=false
ws_read_socket_timeout=false

wcs-core.properties
...

### JVM OPTIONS ###
-Xmx32g
-Xms32g
#-Xcheck:jni

# Can be a better GC setting to avoid long pauses
-XX:+UseConcMarkSweepGC -Xms32g -Xmx32g -XX:NewSize=8g -XX:MaxNewSize=8g
#Disable heuristic rules
-XX:+UseCMSInitiatingOccupancyOnly
#Reduce Old Gen threshold

-XX:CMSInitiatingOccupancyFraction=70
...

Мы также следовали рекомендациям отсюда.
 
Last edited:

Max

Administrator
Staff member
Добрый день
к тому же, мы добавляли много опций просто наугад.
Это не совсем правильный подход.
Пожалуйста, уберите следующие опции
Code:
cpu_load_avg_size=50
streaming_distributor_queue_size = 1000
streaming_processor_queue_size = 1000
Рекомендуем расширить диапазон медиа портов, если это еще не сделано
Code:
media_port_from=10001
media_port_to=50000
Также рекомендуем обновить Java до 12 или 14 и настроить сборщик мусора ZGC, который дает меньшие паузы при сборке мусора
Но проблемы в Ваших тестах, скорее всего, связаны с загрузкой канала. Если принять, что исходный поток публикуется с максимальным битрейтом, который Вы указали в настройках (1500 кбит/с), для просмотра 450 потоков потребуется канал 700 Мбит от сервера до места проведения теста.
Вы можете включить контроль качества канала при публикации и воспроизведении, и смотреть качество канала в примере Media Devices. Кроме того, Вы можете контролировать загрузку CPU сервера с консоли при помощи утилиты top, а также среднюю загрузку CPU со стороны JVM на странице статистики сервера http://wcs:8081/?action=stat в разделе System Stats и расход памяти JVM в разделе Core Stats, чтобы подтвердить, что ресурсов сервера хватает.
 
Top