Travailler sur un site de tube . J'exécute des vidéos via ffmpeg sur un serveur dédié linux pour convertir en mp4 .
Les spécifications du serveur:
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
Le problème pendant les tests est que, même en ne faisant que 4-5 à la fois, le serveur charge en moyenne environ 36 personnes. Il s'agit d'une seule personne. J'imagine qu'à l'ouverture, de nombreuses personnes téléchargeront en même temps.
Il semble que ffmpeg essaie d'utiliser toutes les ressources disponibles par conversion.
J'ai entendu dire qu'il y a un paramètre -threads que vous pouvez modifier, mais je ne le trouve pas. J'ai un serveur 8 cpu. Il n'est utilisé que pour les conversions, j'ai donc entendu que le meilleur paramètre serait compris entre 2 et 4. Je peux le tester.
Mais comment puis-je modifier ce paramètre? Tout ce que je vois en ligne traite de ce paramètre, mais pas des étapes pour le modifier.
-threads
avant l'entrée, vous appliquez cette option à l'entrée (le décodeur). Une utilisation généralisée estffmpeg [global options] [input options] -i input [output options] output
.(global)
.-threads
argument avant ou après l'-i
argument? De plus, comment dois-je déterminer le nombre de threads à utiliser? Je suis juste en train de faire-c copy
Cela peut être un peu vieux, mais cela semble être une tâche parfaite pour un conteneur comme docker.
full horsepower
(comme l'appelait denjello)Vous pouvez maintenant limiter la quantité de ressources qu'une seule instance ffmpeg peut consommer sans même utiliser les options de ligne de commande ffmpeg. Et pas seulement le processeur mais aussi la mémoire et les E / S.
Encore plus: peut-être que vous avez différentes tâches qui peuvent s'exécuter en arrière-plan et que vous ne vous souciez pas du temps qu'elles prennent et que vous avez des tâches qui devraient s'exécuter rapidement, vous pouvez donc mettre un poids sur différentes tâches.
Voir https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources
Il existe déjà une image ffmpeg prédéfinie sur github: https://github.com/jrottenberg/ffmpeg
Une conversion unique s'exécutera probablement plus lentement en raison de la surcharge, mais si vous exécutez plusieurs instances simultanément, cela pourrait être un énorme avantage. Tout cela évoluera très bien, sans parler de la sécurité améliorée car chaque tâche est isolée du système d'exploitation sous-jacent.
la source
--rm
indicateur pour effectuer une tâche et supprimer le conteneur après la sortie est une chose tout à fait normale que les administrateurs pourraient et devraient faire en 2019. Surtout pour des choses comme la conversion de documents. La conversion échoue? Essayez une autre version du convertisseur sans mettre à niveau / rétrograder votre chaîne d'outils locale? Vous ne faites pas confiance au document car il a été téléchargé sur Internet? Isolez la tâche dans un conteneur. Ffmpeg ne fait pas exception. 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?
consultez le dépôt, examinez le fichier docker et utilisez-ledocker build -t myimage
pour créer vous-même une image locale. Ou créez votre propre dockerfile, ce n'est pas sorcier github.com/alfg/docker-ffmpeg/blob/master/Dockerfile