Настройки 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=13107200 rtp_send_buffer_size =13107200
а также настроить системные очереди командой
ip link set txqueuelen 2000 dev eth0
Для того, чтобы диагностировать проблему с UDP, необходимо отследить сброс UDP-пакетов командой
dropwatch -l kas >start