Чек-лист подготовки к 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 --system2. Лимиты файловых дескрипторов (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 327683. Настройка параметров рантайма Go
Укажите следующие переменные окружения в конфигурации systemd или Docker Compose:
| Переменная | Рекомендуемое значение | Назначение |
|---|---|---|
GOMEMLIMIT | 80% от RAM хоста/контейнера (например, 6GiB при 8GB RAM) | Направляет сборщик мусора Go (GC), предотвращая аварийное завершение по OOM |
GOMAXPROCS | Количество физических ядер CPU | Предотвращает троттлинг CPU в виртуализированных средах |
GODEBUG | madvdontneed=1 | Указывает рантайму Go немедленно возвращать освобождённую память ОС |
4. Чек-лист безопасности перед запуском
- [ ] Смена пароля администратора: Обязательно смените стандартный пароль при первом входе в систему.
- [ ] Ротация JWT секрета: Укажите надёжный случайный ключ в
auth.jwt_secret(не менее 32 символов). - [ ] Включение TLS / HTTPS: Используйте Reverse Proxy (Caddy / Nginx) для защиты WHEP / WebRTC (браузеры блокируют WebRTC на незащищённых HTTP-соединениях).
- [ ] Ограничение портов WebRTC: Откройте в фаерволе строго выделенный диапазон UDP (
50000-50100). - [ ] Выделенный раздел диска: Убедитесь, что каталог архива (
storage_path) смонтирован на отдельный накопитель или раздел, изолированный от корневой файловой системы ОС.