Praca na stronie z rurkami . Biegnę filmy przez ffmpeg na linux serwer dedykowany do konwersji na mp4 .
Specyfikacja serwera:
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
Problemem podczas testów jest to, że nawet robiąc tylko 4-5 naraz, serwer ładuje się gwałtownie do średnio około 36. To tylko jedna osoba. Wyobrażam sobie, że kiedy się otworzy, wiele osób będzie przesyłać jednocześnie.
Wygląda na to, że ffmpeg próbuje wykorzystać wszystkie zasoby dostępne na konwersję.
Słyszałem, że istnieje ustawienie -wątków, które możesz zmienić, ale nie mogę go znaleźć. Mam serwer 8 procesorów. Jest używany tylko do konwersji, więc słyszałem, że najlepsze ustawienie będzie między 2 a 4. Mogę to przetestować.
Ale jak mogę zmienić to ustawienie? Wszystko, co widzę online, omawia to ustawienie, ale nie kroki, aby je zmienić.
-threads
przed wejściem zastosujesz tę opcję wejście (dekoder). Uogólnione użycie toffmpeg [global options] [input options] -i input [output options] output
.(global)
.-threads
arg przed argonem, czy po nim-i
? Jak mam ustalić, ile wątków powinienem użyć? Po prostu robię-c copy
To może być trochę stare, ale to brzmi jak idealne zadanie dla kontenera takiego jak doker.
full horsepower
(jak to nazwał denjello)Teraz możesz ograniczyć ilość zasobów, które pojedyncza instancja ffmpeg może zużyć bez użycia opcji wiersza komend ffmpeg. I to nie tylko procesor, ale także pamięć i operacje we / wy.
Co więcej: być może masz różne zadania, które mogą działać w tle i nie obchodzi Cię, jak długo one zajmują, i masz zadania, które powinny działać szybko, abyś mógł przypisać wagę różnym zadaniom.
Zobacz https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources
Na github jest już wstępnie zdefiniowany obraz ffmpeg: https://github.com/jrottenberg/ffmpeg
Pojedyncza konwersja będzie prawdopodobnie działać wolniej z powodu narzutu, ale jeśli uruchomisz wiele instancji jednocześnie, może to być ogromna korzyść. Wszystko to skaluje się bardzo dobrze, nie wspominając o poprawionym bezpieczeństwie, ponieważ każde zadanie jest odizolowane od podstawowego systemu operacyjnego.
źródło
--rm
flagą w celu wykonania zadania i usunięcie kontenera po wyjściu to zupełnie normalna rzecz, którą administratorzy powinni i powinni zrobić w 2019 r. Zwłaszcza w przypadku konwersji dokumentów. Konwersja kończy się niepowodzeniem? Wypróbować inną wersję konwertera bez uaktualniania / obniżania poziomu lokalnego zestawu narzędzi? Nie ufasz dokumentowi, ponieważ został pobrany z Internetu? Izoluj zadanie w kontenerze. Ffmpeg nie jest wyjątkiem. 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?
przejrzyj repozytorium, sprawdź plik dokera i użyj go,docker build -t myimage
aby samodzielnie stworzyć lokalny obraz. Lub stwórz własny plik dokerów, to nie jest nauka o rakietach github.com/alfg/docker-ffmpeg/blob/master/Dockerfile