Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Настройки WCS по умолчанию в большой степени универсальны и могут нуждаться в подстройке под определенный сценарий клиента.

Настройка сборщика мусора

Важной частью Java VM  является сборщик мусора (Garbage Collector). При запуске сборщик мусора резко увеличивает нагрузку на сервер и может приостановить выполнение остальных задач, поэтому рекомендуется минимизировать его запуски при помощи следующих настроек в файле wcs-core.properties

#Disable heuristic rules
-XX:+UseCMSInitiatingOccupancyOnly

#Reduce Old Gen threshold
-XX:CMSInitiatingOccupancyFraction=70

# Use System.gc() concurrently in CMS
-XX:+ExplicitGCInvokesConcurrent

# Disable System.gc() for RMI, for 10000 hours
-Dsun.rmi.dgc.client.gcInterval=36000000000
-Dsun.rmi.dgc.server.gcInterval=36000000000

Настройка оперативной памяти

При стриминге в памяти создается и уничтожается много объектов с данными. Поэтому рекомендуется выделять под Java memory heap не менее, чем 1/2 физической памяти сервера. Например, если объем оперативной памяти сервера составляет 32 Гб, рекомендуется выделить 16 Гб при помощи следующих настроек в файле wcs-core.properties

-Xmx16g
-Xms16g

Кроме того, если не используются REST hooks, можно оптимизировать работу с памятью за счет отключения взаимодействия между ядром и административным модулем при помощи настройки в файле flashphoner.properties

disable_manager_rmi=true

Настройка UDP

При стриминге медиаданные передаются UDP-пакетами. UDP-пакеты могут отбрасываться, если, например, сервер не успевает разобрать очередь пакетов, что ведет к ухудшению качества изображения, фризам. Для того, чтобы этого избежать, необходимо подстроить буферы UDP-сокетов настройками в файле flashphoner.properties

rtp_receive_buffer_size=131072
rtp_send_buffer_size =131072

а также настроить системные очереди командой

ip link set txqueuelen 2000 dev eth0

Для того, чтобы диагностировать проблему с UDP, необходимо отследить сброс UDP-пакетов командой

dropwatch -l kas
>start

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

Качество картинки при воспроизведении у пользователя зависит от битрейта: чем выше битрейт, тем выше качество. Однако, чем выше битрейт, тем больше загружается канал передачи данных, и, если полоса пропускания между сервером и клиентами ограничена, есть вероятность, что канал будет загружен полностью. Это приводит к сбросу битрейта и резкому снижению качества картинки.

В связи с этим, необходимо ограничивать битрейт для того, чтобы обеспечить достаточное качество картинки при приемлемой загрузке канала.

Ограничение битрейта при публикации

Для снижения нагрузки на канал от публикующей стороны до сервера можно задать минимальное и максимальное значения битрейта в кбит/с в скрипте публикации при помощи JavaScript API

session.createStream({
    name: streamName,
    display: localVideo,
    constraints: {
        video: {
            minBitrate: 500
            maxBitrate: 1000
        }
    }
    ...
}).publish();

Ограничение битрейта на сервере

Минимальное и максимальное значение битрейта в бит/с на сервере устанавливается следующими настройками в файле flashphoner.properties

webrtc_cc_min_bitrate=500000
webrtc_cc_max_bitrate=1000000

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

webrtc_cc2_twcc=false

и включить декодирование потоков на сервере только по запросу, для снижения нагрузки на сервер

streaming_video_decoder_fast_start=false
  • No labels