Co powoduje, że Jellyfin przechowuje więcej danych tymczasowych, niż oczekiwano?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Jellyfin może przechowywać więcej danych tymczasowych, niż oczekiwano, ponieważ transkodowanie, pamięci podręczne, generowane artefakty multimedialne i zadania czyszczenia mają różne cykle życia.

Rosnąca pamięć podręczna lub katalog tymczasowy nie oznacza automatycznie wycieku. Niektóre pliki należą do aktywnych sesji, inne są wielokrotnie używanym stanem pochodnym, jeszcze inne czekają na osiągnięcie określonego wieku lub progu czasowego, a część pozostaje, ponieważ zadanie zakończyło się przed wykonaniem czyszczenia. Najpierw ustal producenta danych i ich cykl życia; usunięcie niewyjaśnionego katalogu może ukryć dowody lub wymusić kosztowne ponowne generowanie bez usunięcia przyczyny.

Przyczyną jest niedopasowanie cyklu życia, a nie po prostu duża pamięć podręczna

Dane tymczasowe stają się podejrzane, gdy ich obserwowany czas życia przestaje odpowiadać zdarzeniu, które je utworzyło. Zestaw roboczy transkodowania powinien odzwierciedlać aktywność odtwarzania, wielokrotnie używane miniatury lub dane trickplay mogą celowo przetrwać jedną sesję, a pliki zarządzane przez mechanizm czyszczenia mogą pozostać do czasu wygaśnięcia minutnika lub osiągnięcia progu. Są to różne zasady, nawet jeśli każda ścieżka wygląda na „tymczasową”.

Wskazówki dotyczące rozwiązywania problemów z Jellyfin przy dużym zużyciu zasobów rozróżniają aktywne transkodowanie od innych zadań działających w tle, dlatego przed uznaniem pozostałych plików za osierocone należy sprawdzić aktywne transkodowanie. Plik, który nadal ma właściciela i aktywnego użytkownika, nie jest nieaktualny tylko dlatego, że jest duży.

Problem występuje wtedy, gdy wzrost jest niewyjaśniony: żaden aktywny producent nie potrzebuje danych, żadna zasada ponownego użycia nie uzasadnia ich przechowywania, a żadna reguła czyszczenia nie przewiduje, kiedy powinny zniknąć. Gdy wszystkie trzy wyjaśnienia zawiodą, zatrzymane dane tymczasowe stają się defektem operacyjnym, a nie zwykłym kosztem przetwarzania pochodnych multimediów.

Cztery przyczyny zatrzymywania danych tymczasowych

Przed usunięciem sklasyfikuj zatrzymane pliki według producenta. Przydatne kategorie to dane aktywnej sesji, wielokrotnie używane artefakty pochodne, pliki oczekujące na czyszczenie zgodne z zasadami oraz osierocone pliki pośrednie pozostawione przez przerwaną pracę. Każda kategoria ma inny bezpieczny moment usunięcia.

Systemy czyszczenia oparte na wieku pokazują, dlaczego „obecnie nieużywany” nie oznacza „kwalifikujący się do usunięcia”: przechowywanie może zależeć od znaczników czasu, reguł i zaplanowanych przebiegów czyszczenia. Dlatego reguły czyszczenia oparte na wieku są przydatnym modelem oddzielania zasad cyklu życia od bieżącego stanu sesji.

Skorzystaj z poniższych czterech sygnatur, aby ustalić, czy wzrost jest oczekiwany, opóźniony czy wynika z osierocenia plików. Nie stosuj globalnego progu rozmiaru, dopóki nie wiesz, czy katalog zawiera usuwalne pliki robocze, czy wielokrotnie używane artefakty, których ponowne wygenerowanie odtworzyłoby tę samą zajętość.

Przyczyna 1: Aktywne transkodowania nadal korzystają z zestawu roboczego

  • Mechanizm: aktywna lub niedawno kończąca się sesja odtwarzania zapisuje tymczasowe segmenty, które pozostają potrzebne do czasu zwolnienia ich przez potok transkodowania.
  • Sygnatura objawu: czas modyfikacji plików i wzrost katalogu odpowiadają aktywnym sesjom transkodowania lub niedawnym przewinięciom.
  • JEŚLI–WTEDY: jeśli zestaw roboczy przestaje się zmieniać i zostaje zwolniony po zakończeniu wszystkich transkodowań, traktuj go jako powiązany z sesją, a nie osierocony.

Przyczyna 2: Wielokrotnie używane artefakty pochodne są celowo przechowywane

  • Mechanizm: miniatury, obrazy trickplay, metadane lub inne wygenerowane reprezentacje są przechowywane, ponieważ przyszli klienci mogą użyć ich ponownie.
  • Sygnatura objawu: pliki pozostają niezmienione między sesjami i są ponownie odczytywane podczas przeglądania lub przewijania; pliki trickplay i metadane mogą więc działać bardziej jak buforowany stan pochodny niż dane robocze jednej sesji.
  • JEŚLI–WTEDY: jeśli usunięcie plików powoduje tylko przewidywalne ponowne generowanie bez zmniejszenia długoterminowej zajętości, zarządzaj generowaniem i przechowywaniem zamiast wielokrotnie ich usuwać.

Przyczyna 3: Czyszczenie nie osiągnęło jeszcze wyzwalacza wieku lub harmonogramu

  • Mechanizm: producent kończy pracę, ale za usuwanie odpowiada oddzielny proces czyszczenia uruchamiany później.
  • Sygnatura objawu: stare pliki znikają partiami o określonej porze lub po osiągnięciu stałego wieku, a nie bezpośrednio po odtwarzaniu lub analizie.
  • JEŚLI–WTEDY: jeśli okres przechowywania odpowiada udokumentowanemu lub zaobserwowanemu oknu czyszczenia, zmień zasady tylko wtedy, gdy ilość wolnego miejsca wymaga skrócenia tego okresu.

Przyczyna 4: Przerwana praca pozostawia osierocone pliki pośrednie

  • Mechanizm: proces tworzy pliki tymczasowe, ale ulega awarii, zostaje zakończony lub kończy się ścieżką, na której nie wykonuje się czyszczenie.
  • Sygnatura objawu: nieaktualne pliki nie mają aktywnego właściciela ani wzorca ponownego użycia, a ich znaczniki czasu skupiają się wokół przerwanych zadań; rzeczywiste awarie automatyzacji pokazują, jak pomijanie czyszczenia po przerwaniu może powodować gromadzenie się dużych katalogów roboczych.
  • JEŚLI–WTEDY: jeśli to samo zadanie wielokrotnie pozostawia pliki po anulowaniu lub awarii, napraw czyszczenie wykonywane przy zamykaniu, a następnie usuń wyłącznie potwierdzony zestaw osieroconych plików.

Granica awarii: odróżnianie oczekiwanego przechowywania od nieprawidłowego wzrostu

Nie oceniaj sytuacji wyłącznie na podstawie rozmiaru katalogu. Zapisz rozkład wieku plików, niedawną aktywność modyfikacji, aktywne sesje Jellyfin, zaplanowane zadania oraz proces, który nadal ma otwarty każdy podejrzany plik. Oczekiwane przechowywanie ma właściciela lub regułę; nieprawidłowy wzrost nie ma żadnego z nich albo wielokrotnie przekracza ustaloną regułę.

Rozliczanie systemu plików również może wprowadzać w błąd. W systemie Linux usunięty plik może nadal zajmować bloki, gdy proces wciąż ma go otwartego, dlatego usunięte pliki mogą nadal zajmować miejsce na dysku, nawet gdy widoczna nazwa ścieżki zniknęła. Jeśli wartości `df` i sumy rozmiarów katalogów się nie zgadzają, przed usunięciem kolejnych danych sprawdź otwarte deskryptory plików.

Granica zostaje przekroczona, gdy producent zakończył pracę, oczekiwane okno czyszczenia minęło, pliki nie są wielokrotnie używanym stanem pochodnym, a zajętość nadal rośnie lub odtwarza się po ręcznym usunięciu. W takim momencie sama zmiana rozmiaru pamięci podręcznej usuwa objaw, a nie przyczynę. Napraw cykl życia, który tworzy, zamyka, unieważnia lub usuwa dane.

Przed rozpoczęciem czyszczenia utwórz rejestr danych tymczasowych

Utwórz krótki rejestr dla każdej dużej ścieżki tymczasowej: producent, rola danych, aktywny właściciel, najstarszy i najnowszy czas modyfikacji, sygnał ponownego użycia, oczekiwany wyzwalacz czyszczenia, bieżący rozmiar oraz warunek bezpiecznego usunięcia. Dzięki temu stwierdzenie „pamięć podręczna jest ogromna” zamienia się w sprawdzalne tezy, a późniejszy wzrost można porównać ze znaną wartością bazową.

Wyjaśnienie ZimaSpace dotyczące podziału obciążenia na odczyt i zapis pomaga odróżnić dane aktywnie tworzone od danych jedynie ponownie używanych. Gdy właściciel pliku jest niepewny, inspekcja procesów w systemie Linux może wskazać, który proces nadal ma otwarty plik, zanim czyszczenie zmieni dostępne dowody.

Wykonaj decyzję o czyszczeniu dopiero wtedy, gdy rejestr wskaże zestaw przeznaczony do usunięcia, a producent nie będzie już z niego korzystać. Usuń niewielką, potwierdzoną próbkę, zweryfikuj działanie Jellyfin, a następnie zastosuj regułę czyszczenia. Jeśli katalog natychmiast odrośnie do tego samego stabilnego rozmiaru, dostosuj producenta lub zasady przechowywania zamiast planować niekończące się usuwanie.

Pole Pytanie
Producent Które zadanie Jellyfin lub który proces utworzył pliki?
Rola Aktywny zestaw roboczy, wielokrotnie używany stan pochodny, opóźnione czyszczenie czy osierocone pliki?
Właściciel Czy któryś proces nadal ma otwarte pliki?
Wiek Kiedy zmodyfikowano najstarsze i najnowsze pliki?
Czyszczenie Jakie zdarzenie, minutnik lub próg wieku powinny je usunąć?
Bezpieczne działanie Jakie dowody sprawiają, że usunięcie będzie odwracalne i obarczone niskim ryzykiem?

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

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.