Wyniki Immich zmieniają się na serwerze z wieloma aplikacjami, ponieważ kontenery współdzielą ograniczone zasoby procesora, pamięci, pamięci masowej i sieci, mimo że działają w oddzielnych przestrzeniach procesów.
Wyszukiwanie zdjęć może być szybkie w południe, a wolne podczas tworzenia kopii zapasowej, skanowania lub transkodowania przez inną aplikację. Konfiguracja Immich się nie zmieniła, ale zmieniły się dostępny budżet zasobów i zawartość pamięci podręcznych, dlatego przydatne wyjaśnienie musi uwzględniać całe obciążenie hosta.
Kontenery oddzielają procesy, ale nie fizyczne zasoby
Kontenery zapewniają przestrzenie nazw i kontrolowane limity, ale ostatecznie wykonują operacje na tych samych procesorach i zwykle korzystają z tego samego kontrolera pamięci, dysków oraz interfejsów sieciowych. Usługa Immich może mieścić się we własnym limicie, a mimo to czekać na współdzielone urządzenie fizyczne lub harmonogram jądra, zajęte przez niezwiązane z nią zadania.
Raport z użycia Immich w środowisku wielokontenerowym opisuje energooszczędny host uruchamiający dziesiątki kontenerów przy zwykle umiarkowanym użyciu procesora. Nie gwarantuje to identycznych wyników w innych środowiskach; pokazuje natomiast, dlaczego sama liczba usług jest słabym wskaźnikiem i dlaczego rzeczywiste nakładające się zadania trzeba obserwować na poziomie hosta.
Zainwentaryzuj wszystkie zaplanowane i skokowe zadania sąsiednich usług: kopie zapasowe, skanowanie multimediów, pobieranie, bazy danych i transkodowanie wideo. Zapisuj ich godziny rozpoczęcia wraz z opóźnieniem Immich. Korelacja nie dowodzi związku przyczynowego, ale powtarzalna zgodność wskazuje na kontrolowany eksperyment polegający na wstrzymaniu lub zmianie harmonogramu, który może zweryfikować podejrzewane zakłócenia.
Konkurencja o pamięć zmienia zawartość pamięci podręcznej
Immich działa sprawniej, gdy często używane strony bazy danych, miniatury i dane modeli pozostają w pamięci. Sąsiednia usługa, która zwiększa swój zestaw roboczy, może usunąć te strony z pamięci bez wywoływania błędu braku pamięci. Następne żądanie ponosi wtedy koszty odczytu z pamięci masowej lub wczytania modelu, których nie było, gdy dane znajdowały się w pamięci podręcznej.
Omówienie pamięci serwerowej firmy Kingston wyjaśnia, że odpowiednia pojemność zmniejsza zależność aplikacji intensywnie korzystających z pamięci od wolniejszej pamięci masowej. W tym przypadku nie chodzi o to, że każdy domowy serwer potrzebuje pamięci klasy korporacyjnej; chodzi o to, że utrata zawartości pamięci podręcznej może zmienić pozornie identyczne żądanie Immich w inne obciążenie fizyczne.
Porównaj aktywność pamięci podręcznej stron, użycie pamięci wymiany, liczbę poważnych błędów stron i odczyty z pamięci masowej przed uruchomieniem sąsiedniej usługi oraz po nim. Jeśli jej wstrzymanie przywróci zachowanie typowe dla ciepłej pamięci podręcznej bez zmiany Immich, wskazuje to na znaczenie rezydencji danych w pamięci. Sam wysoki odsetek zajętej pamięci RAM nie wystarcza jako dowód, ponieważ zdrowe buforowanie systemu plików celowo wykorzystuje inaczej bezczynną pamięć.
Kolejki pamięci masowej łączą niezależne usługi
Kopia zapasowa może przesyłać duże pliki, podczas gdy Immich wykonuje małe operacje na bazie danych i miniaturach. Nawet gdy łączna przepustowość pozostaje poniżej deklarowanego maksimum dysku, kolejkowanie może wydłużyć czas realizacji żądań wrażliwych na opóźnienia. Pamięć masowa montowana przez sieć dodaje do tego łańcucha konkurencji kolejny harmonogram i ścieżkę sieciową.
Artykuł ZimaSpace o ścieżce danych Immich pokazuje, że wybór wyników wyszukiwania i wyświetlanie multimediów to odrębne kroki o różnych zależnościach. To rozróżnienie pomaga wykryć zależność od pamięci masowej: szybkie identyfikatory wyników, po których następuje opóźnione ładowanie miniatur, wskazują na późniejszy etap ścieżki niż wolny już wybór danych w bazie.
Podczas odtwarzania tego samego żądania mierz opóźnienie urządzenia i głębokość kolejki dla każdego punktu montowania. Wstrzymaj tylko podejrzaną usługę intensywnie korzystającą z operacji wejścia-wyjścia, a następnie powtórz test po ustabilizowaniu pamięci podręcznych. Jeśli poprawa utrzyma się w wielu naprzemiennych seriach, uzasadnia to rozdzielenie harmonogramów lub pamięci masowej; jeśli nie, wróć do hipotez dotyczących procesora, pamięci lub sieci.
Wykonaj test izolacyjny z wstrzymaniem i odtworzeniem
Wybierz stały punkt końcowy, na przykład wczytanie tego samego fragmentu osi czasu lub uruchomienie znanego wyszukiwania inteligentnego, i określ warunki zimnej lub ciepłej pamięci podręcznej. Wykonaj trzy próby przy pełnym zestawie usług. Następnie wstrzymaj jedną podejrzaną usługę bez ponownego uruchamiania Immich i powtórz tę samą sekwencję działań klienta oraz obserwacji.
Raport dotyczący silnej konkurencji Immich podczas przetwarzania po aktualizacji opisuje awarię przesyłania plików przez inną usługę fotograficzną, gdy host był zajęty. To jeden konkretny układ, a nie uniwersalne ograniczenie, ale pokazuje, że prawidłowo działająca kolejka zadań w tle może nadal zużywać wystarczająco dużo współdzielonych zasobów, aby pogorszyć działanie innej usługi interaktywnej.
Uznaj zakłócenia za potwierdzone tylko wtedy, gdy wstrzymanie powoduje powtarzalną zmianę opóźnienia, a jednocześnie spada oczekiwanie na odpowiedni zasób. Następnie przetestuj wąskie działanie zaradcze — zmniejszenie współbieżności, przedział czasowy w harmonogramie, limit procesora, rezerwację pamięci lub oddzielną pamięć masową. Zachowaj ustawienia umożliwiające wycofanie zmian, ponieważ odizolowanie jednej usługi może ujawnić drugie ograniczenie.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Czym jest stan Immich i które jego elementy muszą być zachowane?
Stan Immich obejmuje oryginały, relacje w bazie danych, tożsamość, konfigurację i pochodne; utrwalaj każdy element zależnie od tego, czy można go odtworzyć.

Jak Immich obsługuje uwierzytelnianie w sesjach lokalnych i zdalnych?
Immich używa tożsamości obsługiwanej po stronie serwera oraz sesji klienta, a nagłówki serwera proxy, źródła i przekierowania OIDC mogą powodować różnice w działaniu lokalnym...

Co powoduje spowolnienie wyszukiwania lub wyników zapytań w Immich w miarę wzrostu ilości danych?
Rozrost Immich może powiększać indeksy, wypierać często używane strony z pamięci, komplikować filtry i opóźniać dostarczanie multimediów; przed dostrajaniem rozdziel te etapy.

