Welche Konfigurationsfaktoren bestimmen die Skalierbarkeit von Jellyfin?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Die Skalierbarkeit von Jellyfin wird durch die erste Ressource oder Abhängigkeit bestimmt, die unter der tatsächlichen Kombination aus Wiedergabe und Hintergrundaufgaben im Haushalt an ihre Auslastungsgrenze stößt.

Zwei Server mit derselben CPU können sehr unterschiedliche Workloads bewältigen, wenn einer hauptsächlich kompatible Dateien per Direct Play wiedergibt, während der andere gleichzeitig Untertitel einbrennt, HDR-Tonemapping durchführt, Remote-Benutzer bedient und Bibliotheken scannt. Die Konfiguration ist entscheidend, weil sie den Verarbeitungspfad, das Speichermuster und den Netzwerkbedarf festlegt, den jede Sitzung erzeugt, bevor die reine Hardwarekapazität relevant wird.

Der Wiedergabemodus entscheidet, welche Ressource teuer wird

Eine Direct-Play-Sitzung verlangt vom Server hauptsächlich, eine Mediendatei zu lesen und deren Bitrate bereitzustellen, sodass der Rechenaufwand gering bleiben kann. Remuxing verursacht Container-Verarbeitung, die Audiokonvertierung Codec-Arbeit, und die Videotranskodierung kann die Hauptlast auf eine GPU-Medieneinheit oder die CPU verlagern. Die Skalierbarkeit beginnt daher mit dem Anteil der Sitzungen, die auf dem kostengünstigen Pfad bleiben.

Jellyfins Hardware-Richtlinien unterscheiden diese Pfade und warnen, dass reine CPU-Videotranskodierung äußerst anspruchsvoll sein kann, insbesondere bei der Verarbeitung von HDR nach SDR. Die Richtlinien zur Hardwarebeschleunigung stützen eine bedingte Aussage: Ein „kleiner Server“ kann mit kompatiblen Clients gut skalieren, aber eine sehr niedrige Obergrenze erreichen, wenn dieselben Clients eine aufwendige Softwarekonvertierung erzwingen.

Die Grenze liegt in der Variabilität der Clients. Ein Benchmark mit einer einzigen unkomplizierten H.264-Datei kann keinen Haushalt mit 4K-HEVC, Bilduntertiteln, nicht unterstütztem Audio und Browsern mit unterschiedlicher Dekodierungsunterstützung abbilden. Erstelle den Skalierungstest anhand der tatsächlichen Medien- und Client-Matrix und behalte diese Matrix bei, während du die Zahl gleichzeitiger Sitzungen erhöhst.

Transkodierungseinstellungen wägen Qualität, Bandbreite und Rechenleistung gegeneinander ab

Bitratenlimits, Encoder-Voreinstellungen, Tonemapping, Untertitelverarbeitung und Ziel-Codecs verändern den erforderlichen Aufwand für jeden konvertierten Stream. Eine niedrigere Ausgabebitrate kann den Uplink für Remote-Verbindungen entlasten, erhöht aber den Konvertierungsaufwand, wenn die Quelle ansonsten per Direct Play wiedergegeben würde. Eine Encoder-Voreinstellung mit höherer Qualität kann mehr Zeit der Beschleuniger-Hardware beanspruchen, obwohl sich die Benutzerzahl nicht verändert hat.

Das Bandbreitenmodell von ZimaSpace zeigt, warum die Kapazität für Remote-Verbindungen anhand der gleichzeitig übertragenen Bitraten und nicht allein anhand der Dateigröße berechnet werden muss. Das Modell für gleichzeitige Bitraten macht auch die Wechselwirkung sichtbar: Eine Bandbreitenbegrenzung für Remote-Verbindungen kann ein Netzwerkproblem in eine Transkodierungsaufgabe verwandeln. Daher lässt sich die Skalierbarkeit nicht isoliert anhand der CPU oder der Upload-Geschwindigkeit schätzen.

Die Grenze ist die Echtzeitverarbeitung. Eine Transkodierung, die startet, ist nicht zwangsläufig nachhaltig, wenn ihre Verarbeitungsgeschwindigkeit unter die Wiedergabegeschwindigkeit fällt oder ihre Segmentwarteschlange wächst. Eine Konfiguration sollte nur dann als skalierbar gelten, wenn jeder repräsentative konvertierte Stream während des gesamten Testzeitraums einen ausreichenden Abstand zur Echtzeit beibehält und die anderen erforderlichen Sitzungen stabil bleiben.

Arbeitsspeicher und Cache bestimmen den Spielraum für Abfragen und Metadaten

Benutzer streamen nicht nur Videos: Sie durchsuchen Bibliotheken, suchen, laden Grafiken, aktualisieren den Wiedergabestatus und lösen Metadatenabfragen aus. Ausreichend Arbeitsspeicher ermöglicht es, häufig verwendete Datenbank- und Dateisystemseiten resident zu halten, wodurch wiederholte Speicherzugriffe reduziert werden. Zu wenig Arbeitsspeicher führt zu stärkerem Speicher-Reclaim oder Auslagerung, wodurch die Benutzeroberfläche beeinträchtigt werden kann, bevor die Medien-Engine ihre Grenze erreicht.

Der praktische Effekt zeigt sich, wenn ein Server nach dem Aufwärmen schneller wird, ohne dass die Hardware verändert wurde. Das Verhalten des aufgewärmten Caches trennt wiederverwendbare Metadaten von neuer Konvertierungsarbeit. Das ist für die Interpretation von Skalierungstests wichtig: Zehn wiederholte Aufrufe einer Bibliothek sind nicht gleichbedeutend mit zehn Clients mit leerem Cache, die auf unterschiedliche Bereiche eines großen Katalogs zugreifen.

Die Grenze besteht darin, dass ein Cache keinen Durchsatz für nicht gecachte oder rechenintensive Aufgaben erzeugt. Eine schnelle Benutzeroberfläche kann neben einem überlasteten Encoder bestehen, und viel Arbeitsspeicher kann kein gesättigtes Netzwerk reparieren. Erfasse Speicherdruck und die Latenz wiederholter Anfragen als eigene Achsen, statt jede Verlangsamung in die pauschale Schlussfolgerung „Der Server ist voll“ einfließen zu lassen.

-15% OFF

Speicher und Netzwerk erzeugen unabhängige Grenzen für gleichzeitige Zugriffe

Mediendateien werden meist groß und sequenziell gelesen, während Jellyfins Datenbank, Metadaten, Vorschaubilder, Protokolle und Transkodierungssegmente kleinere oder schreibintensivere Vorgänge erzeugen können. Gleichzeitig teilen sich Remote-Sitzungen die Upload-Bandbreite. Ein System kann daher bei derselben Benutzerzahl lokal durch Warteschlangen beim Speicher und remote durch die Upload-Bandbreite begrenzt werden.

Das Framework für Auslastung, Sättigung und Fehler ist hilfreich, weil es CPU, Arbeitsspeicher, Speicher und Netzwerk als separate Ressourcen mit jeweils eigenen Anzeichen betrachtet. Die erste Warteschlange oder der erste Fehler, der bei steigender Parallelität wiederholt auftritt, ist aussagekräftiger als ein durchschnittlicher CPU-Prozentsatz, der eine gesättigte Festplatte, Netzwerkkarte oder Hardware-Encoder verbergen kann.

Die Grenze liegt in der Überschneidung. Eine Festplatte, die problemlos drei Filme bereitstellt, kann Schwierigkeiten bekommen, wenn gleichzeitig ein Bibliotheksscan, ein Backup, ein Download und ein Schreibvorgang im Transkodierungs-Cache auf sie zugreifen. Teste normale Spitzenkombinationen statt isolierter Streams und verlagere oder plane die konkurrierende Aufgabe nur dann um, wenn dieselbe Ressource wiederholt von der Auslastung in die Warteschlangenbildung übergeht.

Miss eine Skalierungskurve, statt eine feste Benutzergrenze zu nennen

Beginne mit einer festen Workload-Einheit, etwa einer Direct-Play-Wiedergabe im Wohnzimmer, einer Browser-Transkodierung und einem Remote-Stream. Füge jeweils eine Einheit hinzu und erfasse dabei die Latenz bis zum ersten Bild, die Transkodierungsgeschwindigkeit, Pufferungen, CPU- oder GPU-Auslastung, Speicherdruck, Speicherwarteschlangen und den Netzwerkdurchsatz. Das aussagekräftige Ergebnis ist der Verlauf der Verschlechterung und die erste Kennzahl, die ihren Spielraum verliert.

Die Analyse des Service-Stacks von ZimaSpace warnt außerdem davor, dass logische Isolation Host-Ressourcen nicht exklusiv macht. Das Modell gemeinsam genutzter Host-Ressourcen erinnert daran, benachbarte Dienste im Test zu belassen, wenn sie normalerweise parallel zu Jellyfin ausgeführt werden. Andernfalls beschreibt der Benchmark einen Laborzustand, den der Haushalt tatsächlich nie nutzt.

Lege die skalierbare Grenze einen Schritt unterhalb des ersten wiederholbaren Fehlers fest, nicht bei der höchsten Sitzungszahl, die zufällig einmal gestartet ist. Wiederhole dieselbe Matrix nach Konfigurationsänderungen und akzeptiere eine Verbesserung nur dann, wenn sich der Engpass verlagert oder der Spielraum zunimmt, ohne einen anderen Pfad zu beeinträchtigen. So entsteht ein belastbarer Kapazitätsrahmen statt einer werbeartigen Angabe zur Benutzerzahl pro Server.

Achse Messung Fehleranzeichen
Rechenleistung Transkodierungsgeschwindigkeit / Warteschlange Fällt unter die Echtzeitgeschwindigkeit
Speicher Latenz / Warteschlangentiefe Interaktive Pausen bei Überschneidungen
Netzwerk Übertragene Bitrate / Neuübertragungen Gemeinsam genutzte Verbindung verliert ihren Spielraum
Arbeitsspeicher Reclaim / Auslagerung Aktiv genutzter Speicherbereich wird wiederholt verdrängt

Tech- & KI-Zentrum

Mehr zum Lesen

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.