Ilu jednoczesnych użytkowników może obsłużyć Immich, zanim zacznie działać wolniej?

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.

Nie istnieje jedna uniwersalna liczba jednoczesnych użytkowników Immich, którą może obsłużyć każdy serwer domowy, ponieważ „jeden użytkownik” może oznaczać bezczynne przeglądanie, wyszukiwanie twarzy, duży upload, odtwarzanie wideo albo kilka zadań w tle wykonywanych jednocześnie.

Wydajność należy mierzyć jako największe powtarzalne obciążenie domowe, które nadal spełnia własne kryteria czasu odpowiedzi i liczby błędów. Ustal spokojny punkt odniesienia, odtwórz realistyczne mieszane działania, zwiększaj współbieżność w kontrolowanych krokach i obserwuj pierwszy zasób, który osiągnie nasycenie. Dzięki temu otrzymasz wiarygodny zakres wydajności dla swojego sprzętu i biblioteki, zamiast zmyślonego limitu użytkowników.

Zdefiniuj, co oznacza „spowalnia”, zanim zaczniesz liczyć użytkowników

Wybierz niewielki zestaw działań widocznych dla użytkownika, które mają znaczenie w Twoim domu: otwieranie osi czasu, wczytywanie starszego albumu, wyszukiwanie, odtwarzanie wideo i przesyłanie partii plików. Jeszcze przed testem określ, jak wygląda nieakceptowalny wynik, na przykład zbyt wysokie opóźnienia, przekroczenia limitu czasu, nieudane przesyłanie, zacinanie się odtwarzania albo kolejka, która nadal rośnie po zakończeniu pracy użytkowników.

Nie łącz pracy pierwszoplanowej i zadań w tle bez jej rejestrowania. Generowanie miniatur, transkodowanie wideo, przetwarzanie twarzy, Smart Search, skanowanie biblioteki, konserwacja bazy danych i kopie zapasowe mogą zużywać te same zasoby procesora, pamięci, dysku i sieci co aktywni użytkownicy. Test „czterech użytkowników” podczas dużego importu to inne obciążenie niż przeglądanie ustabilizowanej biblioteki przez cztery osoby.

Przy każdym wyniku zapisuj sprzęt, wersję Immich, lokalizację bazy danych, typ pamięci masowej, łącze sieciowe, rozmiar biblioteki i aktywne zadania w tle. Bez tego kontekstu liczby dotyczącej współbieżności nie da się sensownie porównać po aktualizacji ani z wynikami innego serwera domowego.

Zmierz punkt odniesienia dla jednego użytkownika przy kontrolowanej pracy w tle

Rozpocznij, gdy system znajduje się w znanym stanie, i zmierz reprezentatywną ścieżkę użytkownika. Rejestruj czas odpowiedzi po stronie klienta razem z użyciem procesora i pamięci serwera, presją pamięci, opóźnieniem lub wykorzystaniem dysku, przepustowością sieci, aktywnością bazy danych oraz wszystkimi obserwowalnymi kolejkami procesów Immich.

Informacja o wydajności ma sens tylko wtedy, gdy jasno określono obciążenie, czas trwania testu i kryteria powodzenia. Skorzystaj z testowania wydajności opartego na obciążeniu, aby zapisać punkt odniesienia dla jednego użytkownika, a następnie zmierz, jak zmieniają się opóźnienia, przepustowość i liczba błędów wraz ze wzrostem współbieżności.

Jeśli jeden użytkownik już doświadcza spowolnień, przerwij test współbieżności. Najpierw usuń wąskie gardło występujące przy jednym użytkowniku; dodawanie kolejnych sesji jedynie uwydatni istniejący problem z pamięcią masową, bazą danych, procesorem, siecią lub konfiguracją i niewiele powie o rzeczywistym skalowaniu serwera.

Zwiększaj realistyczną współbieżność w kontrolowanych krokach

Stopniowo dodawaj użytkowników lub skryptowe sesje klientów, zachowując podobny zestaw działań między kolejnymi krokami. Przydatna sekwencja dla gospodarstwa domowego może podwajać liczbę aktywnych sesji względem niewielkiego punktu wyjścia, ale dokładne wartości są mniej istotne niż zmienianie wyłącznie współbieżności przy stałej definicji obciążenia.

Przed testem określ limity opóźnień, liczby błędów i przepustowości oraz używaj realistycznych, wieloetapowych ścieżek zamiast przeciążać jeden endpoint. Realistyczne obciążenie testowe dla Immich powinno łączyć działania faktycznie wykonywane w gospodarstwie domowym, zamiast traktować powtarzane żądania logowania jako przybliżenie wydajności serwera zdjęć.

Utrzymuj każdy krok wystarczająco długo, aby pamięci podręczne, kolejki, połączenia z bazą danych i zapotrzebowanie na pamięć masową osiągnęły stan stabilny. Rejestruj zarówno wartości szczytowe, jak i to, czy system odzyskuje sprawność po usunięciu obciążenia. Serwer, który wygląda poprawnie podczas krótkiego skoku obciążenia, ale pozostawia rosnącą kolejkę zadań, już przekroczył zrównoważony poziom dla tego obciążenia.

-15% OFF

Zidentyfikuj pierwszy zasób, który osiąga nasycenie

Gdy opóźnienia gwałtownie rosną, skoreluj czas wystąpienia z zachowaniem zasobów. Nasycenie procesora podczas wyszukiwania lub działania uczenia maszynowego sugeruje presję obliczeniową; wysokie opóźnienia dysku przy umiarkowanym użyciu procesora wskazują na bazę danych lub pamięć masową multimediów; całkowicie zajęte łącza sieciowe wskazują na ograniczenia transferu lub zdalnego dostępu; rosnące oczekiwanie bazy danych lub presja na połączenia wskazują na warstwę danych.

Zadania w tle mogą zmienić wynik, ponieważ tworzenie miniatur, transkodowanie, uczenie maszynowe, skanowanie, kopie zapasowe lub pętle ponowień mogą zużywać zasoby nawet wtedy, gdy nikt aktywnie nie przegląda biblioteki. Porównaj test przy kontrolowanych warunkach obciążenia Immich w tle, aby nie pomylić zaplanowanych zadań z niskim limitem użytkowników.

Nie „naprawiaj” wydajności, ukrywając błędy za pomocą dłuższych limitów czasu klienta. Zmień ograniczający zasób lub zasady obciążenia — na przykład zaplanuj ciężkie zadania, popraw rozmieszczenie danych, ogranicz liczbę jednoczesnych transkodowań albo zwiększ moc obliczeniową — a następnie ponownie odtwórz dokładnie ten krok, na którym wystąpił problem, aby potwierdzić, że wąskie gardło się przesunęło lub zniknęło.

Ustal praktyczny zakres wydajności dla gospodarstwa domowego i powtórz test

Praktyczną wydajność zdefiniuj jako najwyższą przetestowaną współbieżność, przy której wszystkie wymagane ścieżki użytkownika mieszczą się w ustalonych wcześniej limitach opóźnień i liczby błędów, kolejki wracają w kierunku poziomu bazowego po zakończeniu testu, a host zachowuje wystarczający zapas na zwykłą pracę w tle. Podawaj ją jako zakres zależny od obciążenia, a nie jako maksymalną wartość dla całego Immich.

Powtórz krok graniczny co najmniej raz, zaczynając od czystego i porównywalnego stanu, oraz uwzględnij działania, które wcześniej powodowały pogorszenie wydajności. Następnie krótko przetestuj kolejny, wyższy krok, aby potwierdzić, że granica nadal pojawia się w tym samym zasobie, nie doprowadzając systemu do niekontrolowanego wzrostu kolejki ani sytuacji krytycznej związanej z presją na pamięć masową.

Powtarzaj ten sam test po dużych aktualizacjach Immich, przeniesieniu bazy danych, zmianach pamięci masowej lub sprzętu albo znacznym zwiększeniu rozmiaru biblioteki. Liczba określająca wydajność jest właściwością bieżącego systemu i obciążenia; zachowanie receptury testu ma większą wartość niż przechowywanie starej liczby użytkowników.

Wsparcie i wskazówki

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.