Ostrzeżenie Immich można bezpiecznie monitorować, gdy jego zakres jest ograniczony, operacja, której dotyczy, nadal się kończy, użyteczna praca jest kontynuowana i nie ma oznak problemów z bazą danych, systemem plików, punktem montowania ani pamięcią. Wstrzymaj nowe zapisy, gdy to samo ostrzeżenie powtarza się wraz z nieudanymi operacjami, znikającą pamięcią masową, zabijaniem procesów przez OOM, błędami odzyskiwania bazy danych lub szybko pogarszającym się obciążeniem zasobów.
Samo słowo „ostrzeżenie” nie decyduje o działaniu. Nieszkodliwy komunikat o ponowieniu próby i komunikat „brak miejsca na urządzeniu” mogą pojawić się podczas intensywnego importu, ale oznaczają zupełnie różne poziomy ryzyka. Zapisz pierwszy znacznik czasu, dokładną operację, zasób lub zadanie, którego dotyczy problem, oraz stan pamięci masowej i kontenerów, zanim cokolwiek zrestartujesz.
Klasyfikuj ostrzeżenie na podstawie operacji, którą może przerwać
Zacznij od jednej konkretnej czynności użytkownika: prześlij testowe zdjęcie, otwórz starszy zasób, wykonaj jedno wyszukiwanie lub obserwuj zadanie w tle, które wygenerowało komunikat. Dopasuj znacznik czasu ostrzeżenia do logów serwera Immich, usługi uczenia maszynowego, PostgreSQL, odwrotnego serwera proxy i pamięci masowej. Pytanie brzmi, czy ostrzeżenie dotyczy udanego żądania, ponowionego żądania czy nieudanego zapisu.
Przewodnik po poziomach logów jest dobrym punktem wyjścia: WARN zwykle oznacza nieoczekiwany warunek, z którym aplikacja może sobie poradzić, natomiast ERROR sygnalizuje nieudaną operację. Podczas rozwiązywania problemów z Immich nadal trzeba powiązać tę etykietę z dotkniętym żądaniem, ścieżką zapisu lub zależnością, zanim zdecyduje się, czy dalsze korzystanie jest bezpieczne.
Jeśli ta sama czynność wielokrotnie kończy się powodzeniem, a liczba ostrzeżeń przestaje rosnąć, traktuj je jako przypadek do monitorowania do czasu pojawienia się nowych dowodów. Zapisz typową częstotliwość i kontekst, aby móc ocenić, czy przyszła wersja, zmiana biblioteki lub problem z pojemnością zwiększa częstotliwość komunikatu. Pojedynczy komunikat bez widocznego dla użytkownika wpływu nie jest wystarczającym powodem do odbudowy całego stosu.
Struktura decyzyjna ZimaSpace dotycząca naprawy lub odbudowy Immich opiera się na tej samej granicy: zachowaj stan i zdiagnozuj lokalną usterkę, zanim zastąpisz działające wdrożenie. Ostrzeżenie staje się ważniejsze, gdy wykracza poza jedną operację lub powraca po usunięciu rozpoznanej przyczyny.
Kontynuuj monitorowanie, gdy postęp i stan pozostają prawidłowe
Ostrzeżenie przeznaczone wyłącznie do monitorowania ma stabilny zakres. Kolejka nadal się zmniejsza po ustaniu napływu nowych elementów, ponowione próby ostatecznie kończą się powodzeniem, zapytania do bazy danych pozostają prawidłowe, wolne miejsce utrzymuje się powyżej ustalonego minimum, punkty montowania pozostają dostępne, a kontenery nie gromadzą kolejnych restartów. Widoczny dla użytkownika przebieg pracy powinien mieścić się w typowym zakresie opóźnień i błędów.
Sprawdź tę granicę zamiast zakładać, że jest zachowana. Powtórz tę samą czynność pięć razy, uwzględnij jeden starszy i jeden nowo przesłany zasób, a następnie porównaj liczbę ostrzeżeń przed i po teście. Jeśli ostrzeżenie pojawi się raz podczas ładowania modelu lub przejściowego ponawiania próby zależności, ale kolejne próby będą poprawne, udokumentuj je wraz z dokładną wersją i kontynuuj obserwację. Nie wyciszaj ani nie filtruj ostrzeżenia, dopóki nie wiesz, co oznacza. Wyciszenie głośnego wpisu w logu usuwa punkt odniesienia i może ukryć przejście od nieszkodliwych ponowień do nieudanych zapisów. Monitoruj czas trwania, częstotliwość, powiązane nieudane zadania oraz zasób wskazany w komunikacie; te wymiary są bardziej użyteczne niż same etykiety poziomu ważności.
Wstrzymaj nowe zapisy, gdy ostrzeżenie osiągnie granicę bezpieczeństwa danych
Wstrzymaj przesyłanie plików i zadania w tle, gdy ostrzeżenia wskazują na pełny lub tylko do odczytu system plików, brak oczekiwanego punktu montowania, powtarzające się błędy odzyskiwania lub zapisu PostgreSQL, zabijanie kontenerów przez OOM albo wielokrotne restarty usługi przed zakończeniem transakcji. Zachowaj logi i bieżące ścieżki danych przed zwolnieniem miejsca lub zmianą właściciela plików.
Komunikat „brak miejsca na urządzeniu” związany z bazą danych nie jest zwykłym szumem w logach. W dyskusji dotyczącej awarii Immich nieprawidłowe działanie osi czasu wystąpiło wraz z błędami braku miejsca w PostgreSQL podczas problematycznego wdrożenia.
Ten przypadek nie wskazuje jednej uniwersalnej przyczyny źródłowej; pokazuje, dlaczego ostrzeżenia dotyczące pamięci masowej wymagają natychmiastowego sprawdzenia zakresu problemu, zanim zaakceptowane zostaną kolejne zapisy.
Zastosuj tę samą zasadę wstrzymania, jeśli host zaczyna w niekontrolowany sposób korzystać z pamięci wymiany, pliki pojawiają się w nieoczekiwanym pustym punkcie montowania lub nowe przesłane pliki trafiają do zapisywalnej warstwy kontenera, ponieważ docelowa pamięć masowa nie została zamontowana. Kontynuowanie zapisu może przekształcić możliwy do naprawienia problem z konfiguracją w znacznie większy problem z uzgadnianiem danych.
Wprowadź jedną odwracalną poprawkę i odtwórz pierwotny czynnik wyzwalający
Usuń wyłącznie potwierdzoną przyczynę: przywróć właściwy punkt montowania, bezpiecznie zwiększ ilość wolnego miejsca, zmniejsz równoległość jednego zadania, napraw niesprawną zależność lub skoryguj granicę uprawnień. Nie czyść wszystkich kolejek, nie usuwaj plików bazy danych, nie usuwaj nieznanych wolumenów Dockera i nie aktualizuj wersji jednocześnie; zniszczyłoby to dowody potrzebne do oceny wyniku.
W razie potrzeby zrestartuj tylko dotkniętą usługę, a następnie powtórz dokładny czynnik wyzwalający, który spowodował ostrzeżenie. Wynik pozytywny oznacza, że czynność użytkownika kończy się powodzeniem, ostrzeżenie znika lub wraca do udokumentowanego, nieszkodliwego poziomu, kolejki są opróżniane, pamięć masowa i pamięć operacyjna pozostają w dobrym stanie, a drugi restart nie odtwarza awarii. Zamiast kontynuować eksperymenty, eskaluj problem, gdy komunikat utrzymuje się podczas czystego odtworzenia, integralność bazy danych jest niepewna, wymagane pliki znikają lub pierwsza bezpieczna naprawa nie przywraca prawidłowego postępu. Przekaż dokładne wersje Immich i PostgreSQL, logi ze znacznikami czasu, stan systemu plików, informacje o restartach kontenerów i statusie OOM oraz jeden minimalny sposób odtworzenia problemu, aby kolejny krok mógł być ukierunkowany na warstwę powodującą awarię.
Wsparcie i wskazówki
Więcej do przeczytania

Jak zoptymalizować połączenia z bazą danych Immich dla równoczesnych kontenerów
Nie zwiększaj najpierw wartości max_connections. Zmierz sesje Immich, zsumuj zapotrzebowanie wszystkich kontenerów, zachowaj rezerwę dla administratora i dostosuj tylko faktycznie potwierdzone wąskie gardło.

Jak zapobiegać duplikowaniu zadań lub importów w Immich
Oddziel powtarzające się zadania od zduplikowanych zasobów. Użyj jednej kanonicznej ścieżki pozyskiwania danych, kontroluj ponowne próby i zmiany ścieżek, a następnie przetestuj ponowne wprowadzanie...

Jak naprawić Immich po zapełnieniu woluminu bazy danych
Nigdy nie usuwaj dziennika WAL PostgreSQL, aby zwolnić miejsce. Zatrzymaj operacje zapisu w Immich, zachowaj stan bazy danych, bezpiecznie zwiększ pojemność, odzyskaj działanie PostgreSQL,...

