Устранение проблем с производительностью и узкими местами
RUSEON Core спроектирован для высокоплотного видеостриминга с субмиллисекундной отдачей плейлистов и нулевым копированием кадров. Если вы наблюдаете повышенную нагрузку на CPU, рост памяти или сбросы кадров, используйте это руководство для локализации проблемы.
1. Повышенная нагрузка на CPU
В штатном режиме RUSEON Core потребляет минимум процессорных ресурсов, так как выполняет трансмуксинг, а не транскодирование.
Шаги по устранению:
- Отключение режима Debug: В продакшене убедитесь, что
server.debug: false. - Профилирование CPU через pprof: Если включен
server.pprof_port: 6060:bashgo tool pprof -top http://localhost:6060/debug/pprof/profile?seconds=30 - Визуализация памяти в реальном времени (Statsviz): Откройте
http://localhost:8080/debug/statsviz/в браузере для просмотра живых графиков горутин, кучи и сборщика мусора.
2. Рост памяти и настройка сборщика мусора (GC)
Если потребление оперативной памяти растет:
- Тонкая настройка GC в
config.yaml: RUSEON Core поддерживает прямое управление параметрами памяти Go:yamlserver: gc_percent: 50 # Целевой процент GOGC gc_memory_limit_mb: 2048 # Мягкий лимит памяти GOMEMLIMIT - Разделение RSS процесса и Page Cache ядра:bashRUSEON автоматически сбрасывает страницы из RAM через вызовы
# Реальная память процесса RUSEON ps -aux | grep ruseon # Кеш страниц ОС free -hPOSIX_FADV_DONTNEED.
3. Сбросы буфера (ruseon_ringbuffer_drops_total)
Если в Prometheus растет счетчик ruseon_ringbuffer_drops_total:
- Причина: Потребитель (медленный WebRTC-клиент или медленный диск) не успевает вычитывать кадры.
- Защита: RingBuffer отбрасывает P-кадры только для этого подписчика и ждет ключевой I-кадр, сохраняя общую стабильность системы.
- Решение: Проверьте пропускную способность сети до клиента или скорость записи дискового накопителя.