вымотал за два месяца. я наверное тупой, но я устал с этим бодаться. итак, кейс. У сервера jitsi есть компонент jibri - эта штука позволяет записывать видеоконференции довольно черезочковым способом: службе jibri выдается секрет, она запускает безгуевый хром и при помощи этого секрета подключается к конфе невидимым участником. После чего запускается ffmpeg, который пишет невидимое окно хрома со всем внутри происходящим. Чтобы можно было записывать несколько сессий одновременно, нужно запустить пять таких служб. Я их поднял в контейнерах. Теперь перехожу к сути: у ffmpeg есть одна ебучая особенность: он начинает складывать кадры в память, если не успевает кодировать налету, либо что-то с кодированием идет не так. У меня в принципе могут запускать до пяти записей одновременно. В какой-то момент (закономерность я не отследил), один из ffmpeg-ов начинает жрать CPU, остальные ffmpegи перестают успевать что-либо писать, складывают все в оперативную память, она очень быстро заканчивается, после чего приходит OOM и все процессы убивает к хуям. В итоге ползатели ноют, все ноют, собесы и презы в ВКС не записываются и вообще все плохо. Как изолировать процессы внутри каждого контейнера, ограничив им CPU и оперативную память?
docker run --memory=2g --memory-swap=2g --memory-swappiness=0
а CPU? я виртуалке выделил 48 виртуальных ядер. в итоге по мониторингу дело до ходит до 50% нагрузки, потом память, потом все знают...
https://docs.docker.com/config/containers/resource_constraints/
Мы тупые и не сможем помочь:(
о, спосебо. я действительно туповат
пропатчь ffmpeg, шо ты как не девопс
ооо, в гитхабе jitsi meet по поводу ffmpeg висит issue с 2020 года, один из самых популярных по количеству ответов. кому-то помогает откат версии ffmpeg, кому-то компилирование с какими-то ябучими ключами некоторых нестабильных версий, но проблема глобально не решается
https://hub.docker.com/r/altproject/docker-headless-vnc-chrome и писать сам vnc
jibri - это уже написанная служба, которая запускает ffmpeg с уже захардкоженными ключами.
Насильно глушить её ffmpeg и запускать свой?
Эээм? https://docs.docker.com/config/containers/resource_constraints/ но вообще софтина конечно должна осознавать что у нее лимиты cgroups навешаны
там были некоторые умельцы, которые через алиас подсовывали свой sh-скрипт, где через sed поменяли захардкоженные ключи запуска для ffmpeg. Мне как-то жалко на это времени уже
А форкнуть на Гите и переписать в исходниках?
Жень, он же молодой. Там какое-то самописное, от слова совсем
Обсуждают сегодня