Skip to content

Чек-лист подготовки к Production и оптимизация ​

Перед запуском RUSEON Core в высоконагруженной промышленной эксплуатации (обработка десятков и сотен одновременных потоков камер и WebRTC зрителей) выполните следующие системные настройки операционной системы, сетевого стека и среды выполнения Go.


1. Тюнинг ядра Linux и сетевого стека (sysctl) ​

Создайте файл /etc/sysctl.d/99-ruseon.conf для оптимизации сетевых буферов сокетов под высокобитрейтный стриминг:

ini
# Максимальные размеры буферов приема и отправки для RTSP/WebRTC
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 262144
net.core.wmem_default = 262144

# Минимальные буферы UDP для обработки пакетов Pion WebRTC
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384

# Увеличение очереди входящих соединений
net.core.netdev_max_backlog = 10000
net.core.somaxconn = 4096

# Глобальный лимит файловых дескрипторов
fs.file-max = 2097152

# Настройки виртуальной памяти для mmap-операций BadgerDB
vm.max_map_count = 262144

Примените изменения:

bash
sudo sysctl --system

2. Лимиты файловых дескрипторов (ulimit) ​

Сервер видеостриминга одновременно удерживает множество TCP и UDP сокетов, а также открытые сегменты fMP4-записей.

Создайте файл /etc/security/limits.d/99-ruseon.conf:

text
ruseon    soft    nofile    65535
ruseon    hard    nofile    65535
ruseon    soft    nproc     32768
ruseon    hard    nproc     32768

3. Настройка параметров рантайма Go ​

Укажите следующие переменные окружения в конфигурации systemd или Docker Compose:

ПеременнаяРекомендуемое значениеНазначение
GOMEMLIMIT80% от RAM хоста/контейнера (например, 6GiB при 8GB RAM)Направляет сборщик мусора Go (GC), предотвращая аварийное завершение по OOM
GOMAXPROCSКоличество физических ядер CPUПредотвращает троттлинг CPU в виртуализированных средах
GODEBUGmadvdontneed=1Указывает рантайму Go немедленно возвращать освобождённую память ОС

4. Чек-лист безопасности перед запуском ​

  • [ ] Смена пароля администратора: Обязательно смените стандартный пароль при первом входе в систему.
  • [ ] Ротация JWT секрета: Укажите надёжный случайный ключ в auth.jwt_secret (не менее 32 символов).
  • [ ] Включение TLS / HTTPS: Используйте Reverse Proxy (Caddy / Nginx) для защиты WHEP / WebRTC (браузеры блокируют WebRTC на незащищённых HTTP-соединениях).
  • [ ] Ограничение портов WebRTC: Откройте в фаерволе строго выделенный диапазон UDP (50000-50100).
  • [ ] Выделенный раздел диска: Убедитесь, что каталог архива (storage_path) смонтирован на отдельный накопитель или раздел, изолированный от корневой файловой системы ОС.

Связанная документация ​

Released under the MIT License.