Работа на трубке сайта. Я запускаю видео через ffmpeg на выделенном сервере Linux для преобразования в mp4 .
Спецификации сервера:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Stepping: 3
CPU MHz: 3491.749
BogoMIPS: 6983.49
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
Проблема во время тестирования заключается в том, что даже при выполнении 4-5 раз сервер загружается в среднем до 36. Это всего лишь один человек. Я представляю, когда он откроется, многие люди будут загружать сразу.
Кажется, ffmpeg пытается использовать все ресурсы, доступные для конвертации.
Я слышал, что есть настройки нитей, которые вы можете изменить, но я не могу их найти. У меня сервер на 8 процессоров. Он используется только для конверсий, поэтому я слышал, что лучшая настройка будет между 2 и 4. Я могу проверить это.
Но как мне изменить этот параметр? Все, что я вижу в Интернете, обсуждает этот параметр, но не шаги по его изменению.
-threads
перед входом вы подаете эту опцию входа (Декодер). Обобщенное использование естьffmpeg [global options] [input options] -i input [output options] output
.(global)
.-threads
аргумент до или после-i
аргумента? Кроме того, как я должен определить, сколько потоков я должен использовать? Я в основном просто делаю-c copy
Это может быть немного старым, но это звучит как идеальная задача для контейнера, как докер.
full horsepower
(как назвал это denjello)Теперь вы можете ограничить объем ресурсов, которые может потреблять один экземпляр ffmpeg, даже не используя параметры командной строки ffmpeg. И не только процессор, но и память и IO.
Даже больше: возможно, у вас есть разные задачи, которые могут выполняться в фоновом режиме, и вам все равно, сколько времени они занимают, и у вас есть задачи, которые должны выполняться быстро, чтобы вы могли придать вес различным задачам.
См. Https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources.
На github уже есть предопределенное изображение ffmpeg: https://github.com/jrottenberg/ffmpeg
Вероятно, одно преобразование будет выполняться медленнее из-за накладных расходов, но если вы одновременно запускаете несколько экземпляров, это может быть огромным преимуществом. Все это очень хорошо масштабируется, не говоря уже об улучшенной безопасности, потому что каждая задача изолирована от базовой ОС.
источник
--rm
флагом для выполнения задачи и удаление контейнера после выхода - совершенно обычная вещь, которую администраторы могут и должны сделать в 2019 году. Особенно для таких вещей, как конвертация документов. Преобразование не удается? Попробуйте другую версию конвертера без обновления / понижения вашей локальной цепочки инструментов? Вы не доверяете документу, потому что он был загружен из Интернета? Изолируйте задачу в контейнере. Ffmpeg не является исключением. cvedetails.com/vulnerability-list/vendor_id-3611/Ffmpeg.htmlPerhaps the document converter docker image was compromised and sent copy of all your documents to a remote server. So, using docker images increase possibility such vulnerability. What then?
Оформите репозиторий, изучите докер-файл и используйте егоdocker build -t myimage
для создания локального образа. Или создайте свой собственный докер-файл, это не ракетостроение github.com/alfg/docker-ffmpeg/blob/master/Dockerfile