Перейти к содержанию

Дополнительные инструменты

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

Проверка доступности портов

WCS-сервер может располагаться за NAT и требовать диапазона портов, открытого для внешней сети, например UDP 31000-32000. Это означает, что UDP-пакет, отправленный из внешней сети на порт из этого диапазона, должен дойти до сервера, на котором расположен WCS.

Проведем простой тест. Отправляем UDP пакет извне с помощью netcat (nc) и принимаем его на сервере с помощью tcpdump.
Если пакет дошел, значит порт открыт.

nc

Для Centos

echo -n "hello" | nc -4u -w1 wcs1.com 31000

или для Debian/Ubuntu:

echo -n "hello" | nc -u -w1 wcs1.com 31000

Эта команда отправит простой UDP пакет в нужном направлении.

tcpdump

tcpdump udp port 31000

Эта команда заставит слушать нужный порт и немедленно выведет в консоль информацию о прибытии пакета:

17:50:21.932509 IP myhost.39194 > host.31000: UDP, length 5

Утилита jstack

Это Java-утилита, которая дает важную информацию о Java-процессе и потоках выполнения.
При вызове программы jstack из консоли должна отобразиться краткая информация о jstack:

Если информация не отображается или утилита jstack не найдена, воспользуйтесь инструкцией к установке JDK. После установки jdk нужно будет создать символическую ссылку для jstack, чтобы была возможность его быстро вызвать, если ссылка не была создана во время установки:

ln -sf /usr/java/default/bin/jstack /usr/bin/jstack

Пример:

jstack 8888 > jstack.report

В этом примере 8888 - ID Java-процесса.

Начиная со сборки 5.2.801, WCS запускается от пользователя flashphoner. В связи с этим, при использовании JDK 8, необходимо jstack запускать от того же пользователя:

sudo -u `ps -o uname= -p $(pgrep java)` `which jstack` `pgrep java`

Тестирование пропускной способности канала при помощи iperf

Качество картинки публикуемого потока напрямую зависит от пропускной способности канала между публикующей стороной и сервером, то же касается и подписчиков. Проверить пропускную способность канала можно при помощи утилиты iperf. Эта программа выпущена под все основные операционные системы: Windows, MacOS, Ubuntu/Debian, CentOS. iperf в режиме сервера может быть установлена вместе с WCS, что позволяет тестировать канал целиком, от публикатора до зрителя.

Установка iperf на CentOS 7 производится следующим образом:

yum install iperf3

Запуск iperf в режиме сервера

iperf3 -s -p 5201

Здесь 5201 - порт, на который iperf ожидает соединений от тестирующих клиентов

На стороне клиента iperf запускается следующим образом:

  1. Для проверки канала на отправку данных серверу по UDP
    iperf3 -c test2.flashphoner.com -p 5201 -u
    
    Здесь
  2. test2.flashphoner.com - WCS сервер
  3. 5201 - порт iperf в режиме сервера
    Результат выполнения команды будет следующим:

  4. Для проверки канала на прием данных от сервера по UDP

    iperf3 -c test2.flashphoner.com -p 5201 -u -R
    
    Здесь

  5. test2.flashphoner.com - WCS сервер
  6. 5201 - порт iperf в режиме сервера
    Результат выполнения команды будет следующим:

По умолчанию, iperf тестирует канал в течение 10 секунд. Это время рекомендуется увеличить, например, до 120 секунд

iperf3.exe -c test2.flashphoner.com -p 5201 -u -t 120

Результат тестирования канала на отправку данных серверу по UDP показывает максимальное значение битрейта публикации видео, при котором не будет потерь пакетов. В вышеприведенном примере битрейт публикации следует ограничить 1000 кбит/с, например, на стороне сервера

webrtc_cc_max_bitrate=1000000

Необходимо отметить, что версии iperf на сервере и на тестирующем клиенте должны совпадать. В настоящее время актуальной является версия 3, хотя в репозиториях есть и версия 2.