Документация на Flussonic Media Server

  1. Быстрый старт
  2. How To
  3. Потоковое вещание
    1. Публикация
    2. Прием мультикаста
    3. Варианты источников
    4. Переключение источников
    5. Плейлисты
    6. Наложение логотипа
    7. Миксер
    8. WebRTC публикация
    9. SDI
    10. Отправка на другие сервера
    11. Распознавание DVB субтитров
  4. Транскодер
    1. Логотип
    2. Hardware
    3. Скриншоты
    4. Мозаика
  5. DRM
    1. Simple CAS
    2. Conax DRM
    3. BuyDRM (KeyOS)
  6. Авторизация
    1. Конструктор бэкендов
    2. Сервис сбора статистики
    3. Domain lock
    4. Middleware
    5. Secure links
    6. Ограничение сессий
    7. Мультиавторизация
    8. Бан IP адресов
    9. DVR
    10. Aliaser
  7. API
    1. HTTP API
    2. Events API
    3. MySQL API
    4. SQL API для кластеров
    5. SNMP
  8. Кластер
    1. Ретрансляция
    2. Кластерный захват
    3. Балансировщик нагрузки
    4. Пиринг
    5. Организация CDN
  9. VOD
    1. Кэш
    2. Облако
    3. Транскодирование файлов
  10. DVR
    1. Настройка
    2. Timeshift
    3. Catchup
    4. Проигрывание
    5. Экспорт в MP4
    6. Доступ по протоколам
    7. Timelapse
    8. API
    9. Кластеризация DVR
    10. Репликация
    11. Облако
  11. Воспроизведение
    1. HLS
    2. embed.html
    3. HTML5 с низкой задержкой
    4. Плеер HTML5 с низкой задержкой
    5. MPEG-TS
    6. RTMP
    7. DASH
    8. HDS
    9. RTSP
    10. multicast, CBR UDP
    11. WebRTC проигрывание
    12. H.265
  12. Администрирование
    1. Установка
    2. Обновление

    3. Конфигурация
    4. Мониторинг
    5. Производительность
    6. Лицензия
    7. LUA скрипты
    8. Безопасность
    9. Let's Encrypt
    10. Миграция
  13. IPTV
    1. Захват спутникового видео
    2. Транскодирование
    3. Middleware в IPTV OTT
    4. Экспорт EPG со спутника
    5. Группы каналов

Тюнинг Flussonic Media Server и ОС

В этом разделе будут приведены некоторые часто встречающиеся проблемы и возможности детальной настройки ОС и Flussonic Media Server для больших нагрузок.

Настройка UDP захвата Anchor Anchor x2

При захвате UDP под линуксом необходимо увеличить размер памяти под UDP буферы:

sysctl -w net.core.rmem_max=1048576
sysctl -w net.core.rmem_default=1048576
sysctl -w net.ipv4.udp_mem="8388608 12582912 16777216"

Эти настройки будут работать до перезагрузки. Чтобы сохранить эти параметры навсегда, нужно отредактировать файл /etc/sysctl.conf.

C самый конец файла добавить:

net.core.rmem_max = 1048576
net.core.rmem_default=1048576
net.ipv4.udp_mem = 8388608 12582912 16777216

Чтобы применить изменения из файла, нужно выполнить команду sudo sysctl -p.

Работа с большим количеством памяти Anchor Anchor x2

При наличии более 60 гигабайт памяти рекомендуется зарезервировать 10 гигабайт под Linux:

sysctl vm.min_free_kbytes=10240000

Настройка TCP/IP стека Anchor Anchor x2

Если вы используете Flussonic Media Server для вещания более чем на 3-4 Гбит/с для вас могут стать ощутимыми тонкости настройки TCP стека в Linux.

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

sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_wmem="4096 4194394 16777216"
sysctl -w net.ipv4.tcp_congestion_control=htcp
sysctl -w net.ipv4.tcp_slow_start_after_idle=0

Эти настройки будут работать до перезагрузки. Чтобы сохранить эти параметры навсегда, нужно отредактировать файл /etc/sysctl.conf, в самый конец файла вставить:

net.core.wmem_max = 16777216
net.ipv4.tcp_wmem = 4096 4194394 16777216

Чтобы применить изменения из файла, нужно выполнить команду sudo sysctl -p.

Так же надо поменять настройки сетевого интерфейса: ifconfig eth0 txqueuelen 10000.

Обязательно надо проверить версию драйвера сетевой карты. Желательно использовать самую свежую версию. Выяснить версию драйвера и firmware можно так:

# ethtool -i eth2

driver: ixgbe
version: 3.15.1
firmware-version: 0x61c10001
bus-info: 0000:04:00.0

Важно! При обновлении файла firmware в каталоге /lib/firmware необходимо перезагружать сервер. При этом может остаться старый firmware. Не забудьте запустить утилиту update-initramfs перед рестартом сервера.

Настройка сетевой карты Anchor Anchor x2

Прерывания сетевой карты

Современные 10-гигабитные сетевые адаптеры имеют несколько очередей для входящих и исходящих пакетов, которые иногда приходится вручную привязывать к ядрам процессоров.

Сервер на котором такую оптимизацию не сделали, обрабатывает всю сетевую подсистему на одном ядре. Выглядит это так:

# cat /proc/interrupts
           CPU0   CPU1   CPU2   CPU3   CPU4   CPU5   CPU6   CPU7
  0:       2097      0      0      0      0      0      0      0  IR-IO-APIC      timer
...
 66: 2072120005      0      0      0      0      0      0      0  IR-PCI-MSI      eth2-TxRx-0
 67:    1562779      0      0      0      0      0      0      0  IR-PCI-MSI      eth2-TxRx-1
 68:    1830725      0      0      0      0      0      0      0  IR-PCI-MSI      eth2-TxRx-2
 69:    1504396      0      0      0      0      0      0      0  IR-PCI-MSI      eth2-TxRx-3
 70:    5112538      0      0      0      0      0      0      0  IR-PCI-MSI      eth2-TxRx-4
 71:    2229416      0      0      0      0      0      0      0  IR-PCI-MSI      eth2-TxRx-5
 72:    1686551      0      0      0      0      0      0      0  IR-PCI-MSI      eth2-TxRx-6
 73:    1217916      0      0      0      0      0      0      0  IR-PCI-MSI      eth2-TxRx-7
 74:       2358      0      0      0      0      0      0      0  IR-PCI-MSI      eth2

Для сетевых карт Intel производитель предлагает скрипт set_irq_affinity который раскидывает очереди по ядрам. После его запуска статистика прерываний выглядит так:

# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7
  0:       2097          0          0          0          0          0          0          0  IR-IO-APIC  timer
...
 66: 2072120005          0          0          0          0          0          0          0  IR-PCI-MSI  eth2-TxRx-0
 67:    1562779 1162738082          0          0          0          0          0          0  IR-PCI-MSI  eth2-TxRx-1
 68:    1830725          0 1133908105          0          0          0          0          0  IR-PCI-MSI  eth2-TxRx-2
 69:    1504396          0     177620 1123678951          0          0          0          0  IR-PCI-MSI  eth2-TxRx-3
 70:    5112538          0          0          0 1638450740          0          0          0  IR-PCI-MSI  eth2-TxRx-4
 71:    2229416     130189          0          0          0 1441511712          0          0  IR-PCI-MSI  eth2-TxRx-5
 72:    1686551          0          0          0          0          0 1402472725          0  IR-PCI-MSI  eth2-TxRx-6
 73:    1217916          0          0      66145          0          0          0 1380402032  IR-PCI-MSI  eth2-TxRx-7
 74:       2358          0          0          0          0          0          0          0  IR-PCI-MSI  eth2

Эта настройка становится критичной примерно в районе 3-5 Гбит/с трафика.

Соединение со свичем

При соединении сетевой карты сервера со свичем, проверьте, что с обоих сторон установлены совместимые настройки. Т.е. с обоих сторон должно быть либо auto select, либо строго одинаковая скорость и дуплекс.

Оптимизация сервера для VOD вещания Anchor Anchor x2

Отдельный, более детальный раздел посвящен оптимизации сервера для вещания фильмов.