Przetestuj Immich za pomocą jednej powtarzalnej operacji, skoreluj jego opóźnienie z oczekiwaniem na zasoby i potwierdź podejrzane wąskie gardło poprzez kontrolowaną zmianę.
Zrzut ekranu pulpitu nie pozwala odróżnić użytecznej aktywności od szkodliwej rywalizacji o zasoby. Zmierz jeden punkt końcowy — na przykład akceptowanie przesyłania, wyświetlanie miniatur lub odpowiedź inteligentnego wyszukiwania — przy stałych warunkach dotyczących multimediów i klienta, a następnie zmień wyłącznie podejrzany ograniczający zasób.
Zdefiniuj jeden punkt końcowy i powtarzalny test bazowy
Zacznij od opisania punktu końcowego w obserwowalnych kategoriach. „Immich działa wolno” nie jest stwierdzeniem, które można przetestować, ale „te same dwadzieścia miniatur osi czasu pojawia się po restarcie w ciągu czterech sekund” już tak. Ustal klienta, ścieżkę sieciową, konto, zestaw zdjęć i warunek początkowy, aby kolejne próby różniły się tylko jedną zamierzoną zmienną.
Model ścieżki danych Immich pokazuje, że przesyłanie, przetwarzanie, wybór bazy danych i dostarczanie multimediów korzystają z różnych zależności. Test ukierunkowany na wybór wyników wyszukiwania powinien mierzyć listę wyników oddzielnie od renderowania obrazów; w przeciwnym razie szybkie zapytanie, po którym następuje wolny odczyt plików, zostanie zgłoszone jako jedno nierozróżnialne opóźnienie.
Wykonaj test bazowy co najmniej trzy razy i zachowaj zarówno medianę, jak i najwolniejszy użyteczny percentyl. Zapisz głębokość kolejki, użycie procesora dla każdego kontenera, presję pamięci, aktywność swapu, przepustowość sieci i liczbę retransmisji, opóźnienie dysku oraz głębokość kolejki operacji wejścia-wyjścia. Twierdzenie o wąskim gardle musi łączyć sygnał dotyczący zasobu z opóźnieniem punktu końcowego.
Oddziel nasycenie procesora od presji pamięci
Test ograniczony przez procesor powoduje oczekiwanie wykonywalnych zadań na czas procesora, więc opóźnienie punktu końcowego powinno odpowiadać utrzymującemu się nasyceniu rdzeni lub ograniczaniu częstotliwości. Test ograniczony przez pamięć może zamiast tego wykazywać odzyskiwanie pamięci, swap, zabijanie kontenerów lub wielokrotne ładowanie modeli. Oba przypadki mogą sprawiać, że wykresy procesora wyglądają na obciążone, ale ich interwencje wywołują różne reakcje.
Niedawny niezależny przewodnik po zasobach Immich rozdziela wykorzystanie między serwer, PostgreSQL, Redis i komponenty uczenia maszynowego, zamiast traktować całkowitą ilość pamięci RAM jako jedno wymaganie. Ten widok na poziomie usług ma znaczenie, ponieważ wolna pamięć hosta może współistnieć ze zbyt niskim limitem kontenera, a duża pamięć podręczna plików nie oznacza automatycznie przeciążenia.
Zweryfikuj presję procesora, zmniejszając współbieżność zadań w tle lub przydzielając więcej procesora przy stałej ilości pamięci. Zweryfikuj presję pamięci, usuwając aktywność swapu lub zwiększając ograniczony limit pamięci bez zmiany liczby procesów roboczych. Jeśli punkt końcowy nie poprawi się w sposób powtarzalny, odrzuć ten zasób jako główną granicę w tym teście.
Rozróżnij opóźnienie sieciowe od opóźnienia pamięci masowej
Ograniczenia sieci i pamięci masowej często występują jednocześnie, ponieważ zdalne multimedia przechodzą przez obie warstwy. Nasycone łącze ogranicza liczbę bajtów przesyłanych na sekundę, podczas gdy rywalizacja o pamięć masową wydłuża czas zakończenia odczytu lub zapisu nawet przy nieobciążonym łączu. Testowanie wyłącznie ze zdalnego klienta może więc prowadzić do błędnego przypisania wolnego dostarczania plików niewłaściwej warstwie.
Analiza dysków SSD firmy Kingston podkreśla znaczenie pracy w tle, zachowania oprogramowania układowego, buforowania i poleceń hosta, które wpływają na reakcję pamięci masowej poza deklarowaną szybkością sekwencyjną. W przypadku Immich wiele małych operacji dotyczących miniatur i bazy danych sprawia, że opóźnienie i zachowanie kolejki są bardziej miarodajne niż wynik przepustowości uzyskany dla jednego dużego pliku.
Powtórz test punktu końcowego z przewodowego klienta lokalnego, a następnie ze standardowej ścieżki zdalnej, bez zmiany zbioru danych serwera. Oddzielnie odczytaj reprezentatywny zestaw plików na hoście i obserwuj opóźnienie urządzenia. Poprawa wyłącznie na kliencie lokalnym wskazuje na ścieżkę sieciową; utrzymujące się oczekiwanie po stronie hosta wskazuje na pamięć masową lub jej punkt montowania.
Użyj macierzy interwencji, aby zaakceptować lub odrzucić każdą przyczynę
Przed rozpoczęciem testów zapisz cztery wiersze: procesor, pamięć, sieć i pamięć masowa. Do każdego wiersza dodaj jeden oczekiwany objaw, jedną ukierunkowaną interwencję i jeden warunek odrzucenia. Zapobiega to zmianie diagnozy po pojawieniu się wyników i sprawia, że wynik negatywny staje się użyteczny, zamiast być powodem do kupowania kilku ulepszeń naraz.
Raport z użytkowania Immich opisujący opóźnione miniatury mimo znacznej przepustowości internetu pokazuje, dlaczego same specyfikacje nie wystarczają. Istotnym dowodem jest to, czy ukierunkowana zmiana przesuwa wynik mierzonego punktu końcowego, podczas gdy kohorta multimediów, stan pamięci podręcznej, zadania, klient i wersja aplikacji pozostają bez zmian.
Zaakceptuj procesor tylko wtedy, gdy odciążenie procesora poprawia opóźnienie; pamięć tylko wtedy, gdy pomaga ograniczenie odzyskiwania pamięci; sieć tylko wtedy, gdy pomaga odciążenie ścieżki; a pamięć masową tylko wtedy, gdy zmniejsza się oczekiwanie na urządzenie lub punkt montowania. Jeśli pomagają dwie interwencje, powtórz je w obu kolejnościach, ponieważ drugie wąskie gardło może stać się widoczne dopiero po usunięciu pierwszego.
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.

