Pourquoi les performances de Jellyfin changent-elles lorsqu’un autre conteneur démarre ?

Eva Wong est la rédactrice technique et bricoleuse résidente chez ZimaSpace. Geek depuis toujours, passionnée par les homelabs et les logiciels open source, elle se spécialise dans la traduction de concepts techniques complexes en guides accessibles et pratiques. Eva croit que l’auto-hébergement doit être amusant, pas intimidant. À travers ses tutoriels, elle donne à la communauté les moyens de démystifier les configurations matérielles, depuis la construction de leur premier NAS jusqu’à la maîtrise des conteneurs Docker.

Les performances de Jellyfin peuvent changer lorsqu’un autre conteneur démarre, car l’isolation des conteneurs ne crée pas de capacités distinctes en matière de processeur, de mémoire, de stockage, de réseau ou d’accélérateur.

Sur un serveur domestique, Jellyfin peut rester fluide jusqu’à ce qu’une sauvegarde, un téléchargeur, un indexeur de photos, une base de données ou un conteneur d’IA commence son fonctionnement normal. Le bon diagnostic n’est pas « Docker est lent », mais de déterminer quelle ressource partagée a perdu suffisamment de marge pour modifier la latence ou le débit de Jellyfin. Reproduisez le chevauchement, identifiez la ressource limitée et ne modifiez que cette limite avant d’ajouter du matériel.

La cause fondamentale est la capacité partagée de l’hôte, pas le nombre de conteneurs

Les conteneurs isolent les processus et la configuration, mais ils s’exécutent toujours sur le même hôte physique, sauf si les ressources sont séparées volontairement. Une nouvelle charge active peut donc entrer en concurrence avec Jellyfin pour le temps processeur, la bande passante mémoire, le cache de pages, les files d’attente de stockage, la capacité de la carte réseau ou un accélérateur, même si les deux conteneurs n’ont aucune dépendance au niveau applicatif.

Les recommandations de Docker concernant les limites de ressources rendent le comportement par défaut explicite : un conteneur sans limite peut utiliser le processeur et la mémoire de l’hôte jusqu’à ce que le noyau ou d’autres mécanismes interviennent. C’est pourquoi l’utilisation illimitée des ressources peut transformer une tâche d’arrière-plan inoffensive en voisin bruyant.

La limite de défaillance est mesurable plutôt qu’architecturale. Si le second conteneur démarre alors que Jellyfin dispose encore d’une marge suffisante, la lecture devrait rester stable ; si une ressource précise sature et que Jellyfin récupère lorsque cette charge s’arrête, la concurrence devient l’explication la plus probable. Le nombre de conteneurs, à lui seul, ne prouve rien.

Les quatre causes du ralentissement

La plupart des ralentissements reproductibles liés à la cohabitation appartiennent à quatre catégories : planification du processeur, pression mémoire, concurrence au niveau du stockage et partage du réseau ou d’un accélérateur. Classez le symptôme avant d’ajuster les limites, car chaque catégorie produit une signature différente et nécessite une correction sûre différente.

Un guide pratique des ressources Docker couvre le processeur, la mémoire, le GPU, les entrées-sorties disque et la surveillance comme des contrôles distincts, plutôt que comme un unique réglage générique des « performances des conteneurs ». Cette séparation est utile, car les limites de ressources par sous-système permettent de tester le goulot d’étranglement supposé sans masquer les autres.

Utilisez les signatures ci-dessous comme des hypothèses, pas comme des verdicts. Confirmez une cause en reproduisant la dégradation de Jellyfin pendant que le conteneur concurrent est actif et en observant simultanément la variation de la métrique correspondante sur l’hôte.

Cause 1 : planification du processeur et pression sur le cache partagé

  • Mécanisme : la charge concurrente consomme du temps processeur disponible ou génère suffisamment de changements de contexte et de pression sur le cache pour retarder le travail de Jellyfin.
  • Signature du symptôme : le délai avant la première image, la vitesse de transcodage logiciel, le temps de réponse des métadonnées ou le traitement des sous-titres se dégrade tandis que la saturation ou la limitation du processeur augmente.
  • SI–ALORS : si limiter ou replanifier la charge processeur concurrente rétablit Jellyfin alors que le stockage et le réseau restent normaux, considérez la concurrence processeur comme confirmée.

Cause 2 : récupération mémoire ou échange

  • Mécanisme : un second conteneur augmente l’ensemble de travail jusqu’à ce que l’hôte récupère du cache, utilise la mémoire d’échange ou s’approche d’une condition d’arrêt par manque de mémoire.
  • Signature du symptôme : Jellyfin devient irrégulièrement lent, les lectures de la base de données et des métadonnées perdent le bénéfice du cache préchargé et la pression mémoire augmente avant le ralentissement.
  • SI–ALORS : si un plafond mémoire appliqué au service concurrent supprime la pression liée à la récupération ou à l’échange et normalise la latence de Jellyfin, la mémoire constitue la limite déterminante.

Cause 3 : concurrence dans la file d’attente de stockage

  • Mécanisme : une sauvegarde, un téléchargement, une décompression, un indexage ou des écritures de base de données partagent la même file d’attente de périphérique ou de système de fichiers que l’état de Jellyfin et les lectures de médias.
  • Signature du symptôme : le processeur peut sembler partiellement inutilisé tandis que l’attente d’entrées-sorties et la latence du stockage augmentent ; un seul conteneur bruyant peut ralentir tout l’hôte, car l’attente d’entrées-sorties révèle la concurrence au niveau du stockage.
  • SI–ALORS : si limiter ou déplacer les entrées-sorties concurrentes supprime la latence lors de la recherche, de la navigation ou des accès à la base de données, corrigez la file d’attente de stockage plutôt que d’acheter un processeur plus puissant.

Cause 4 : partage du réseau ou d’un accélérateur

  • Mécanisme : un autre service consomme la même liaison montante, le même chemin réseau ponté, le même GPU, le même moteur multimédia ou la même bande passante de périphérique dont Jellyfin a besoin.
  • Signature du symptôme : le débit distant, la vitesse de transcodage ou les sessions accélérées matériellement se dégradent alors que les métriques générales du processeur et du disque restent acceptables.
  • SI–ALORS : si isoler le transfert réseau ou la charge de l’accélérateur rétablit Jellyfin alors que les autres métriques restent inchangées, imposez cette limite de partage précise.

Limite de défaillance : distinguer la concurrence d’un problème propre à Jellyfin

Une corrélation au démarrage constitue une preuve faible. Un second conteneur peut commencer au même moment qu’un balayage de bibliothèque de Jellyfin, qu’un client demande un transcodage incompatible, qu’un montage multimédia se bloque ou qu’une tâche de base de données s’exécute. La charge concurrente doit pouvoir être supprimée et reproduite avant de pouvoir être incriminée.

Les recommandations concernant les ressources de l’hôte décrivent le problème du voisin bruyant comme une charge qui prive une autre de processeur, de mémoire, de PID ou d’entrées-sorties, ce qui signifie que la ressource affectée doit être observable. Si Jellyfin reste lent après l’arrêt de l’autre conteneur et que la métrique suspecte revient à la normale, reprenez l’enquête du côté de Jellyfin, de son client, du chemin d’accès aux médias ou du comportement du codec.

Comparez également la lecture directe au transcodage, ainsi que la lecture locale à la lecture distante. Un ralentissement présent uniquement dans un chemin multimédia est plus probablement lié au décodage, aux sous-titres, au client ou à la diffusion propres à Jellyfin qu’à une concurrence générique sur l’hôte. La limite de défaillance n’est franchie que lorsque la même charge concurrente modifie de manière prévisible la même ressource et le même symptôme dans Jellyfin.

-15% OFF

Effectuez un test de concurrence à variable unique avant de modifier l’hôte

Enregistrez une référence au repos avec une session Jellyfin représentative, puis démarrez uniquement la charge voisine suspecte et relevez l’utilisation du processeur, la pression mémoire, la latence du stockage ou l’attente d’entrées-sorties, le débit réseau, l’utilisation de l’accélérateur et le symptôme observé dans Jellyfin. Arrêtez cette charge et confirmez que la métrique ainsi que le comportement visible par l’utilisateur reviennent à la normale. Répétez l’opération une fois avant d’accepter le résultat.

L’analyse de ZimaSpace sur la première ressource limitante indique la prochaine étape : corrigez d’abord la ressource qui perd sa marge durable, au lieu de mettre à niveau chaque composant. Appliquez une limite au processeur ou à la mémoire, replanifiez les entrées-sorties, séparez un chemin de stockage, régulez un transfert ou déplacez la tâche intensive pour l’accélérateur, puis répétez le test à l’identique.

Considérez le diagnostic comme validé lorsqu’une seule modification contrôlée supprime le ralentissement reproductible sans créer de nouveau goulot d’étranglement. Si aucune ressource n’évolue avec le symptôme, rejetez l’hypothèse de concurrence et examinez Jellyfin lui-même. Cette règle d’arrêt empêche qu’un démarrage normal de conteneur devienne l’explication de tout problème de lecture sans rapport.

  1. Enregistrez une référence avec Jellyfin seul.
  2. Démarrez la charge d’un seul conteneur suspect.
  3. Associez le symptôme à une métrique de ressource.
  4. Arrêtez la charge et vérifiez le rétablissement.
  5. Modifiez une seule limite, planification ou limite de placement.
  6. Répétez le même test Jellyfin avant d’acheter du matériel.

Centre Tech & IA

Plus à lire

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.