Zastosuj okres karencji podczas uruchamiania oraz tani test gotowości; nie traktuj oczekiwanego rozgrzewania jak awarii.
Ma to znaczenie w aplikacji do zdjęć, wyszukiwania lub obsługi bazy danych, która potrzebuje kilku minut na migrację, załadowanie indeksów lub rozgrzanie pamięci podręcznych. Ryzyko operacyjne polega na tym, że zbyt agresywny test może oznaczyć prawidłowo uruchamiającą się usługę jako niesprawną i uruchomić zewnętrzną automatyzację, mimo że sam stan zdrowia Dockera nie restartuje zwykłego kontenera Compose. Zacznij od zapisanej konfiguracji bazowej, wprowadzaj jedną odwracalną zmianę naraz i zatrzymaj się, gdy obserwowana gałąź przestanie odpowiadać zamierzonej ścieżce konfiguracji.
Ustal konfigurację bazową testów zdrowia kontenera uruchamiającego się powoli
Przed zmianą ustawień zapisz czas uruchamiania na zimno, czas wykonania testu, zmiany stanu zdrowia, gotowość zależności i logi aplikacji. Zachowaj oryginalną konfigurację oraz jeden przebieg zbliżony do produkcyjnego, aby późniejsze usprawnienia porównywać przy tym samym obciążeniu, a nie na podstawie pamięci lub syntetycznego stanu bezczynności.
Użyj bieżących ustawień testu zdrowia Compose, aby potwierdzić obsługiwaną opcję i jej znaczenie. Traktuj wartości domyślne jako znany punkt wyjścia, a nie dowód, że ustawienie pasuje do tego serwera, zestawu klientów lub celu odzyskiwania.
Zdefiniuj kryteria akceptacji i warunki zatrzymania przed edycją. Sygnał akceptacji musi być widoczny w logach, stanie protokołu, danych wyjściowych aplikacji lub przywróconych danych; warunek zatrzymania musi zapobiegać szerszemu dostępowi, utracie danych, wyczerpaniu zasobów lub awarii, która wykorzysta kolejny przedział czasowy przeznaczony na odzyskiwanie.
Zastosuj zmianę testów zdrowia kontenera uruchamiającego się powoli w kontrolowanych etapach
Krok 1: Testuj lokalny punkt końcowy gotowości lub natywną komendę statusu zamiast pełnego przepływu użytkownika. Po zmianie natychmiast sprawdź oczekiwany stan; jeśli się nie pojawi, cofnij ten krok przed zastosowaniem kolejnego.
Krok 2: Ustaw start_period na wartość dłuższą niż zaobserwowany zwykły czas uruchamiania na zimno, a następnie użyj krótszego interwału w stanie ustabilizowanym i ograniczonej liczby ponowień. Po zmianie natychmiast sprawdź oczekiwany stan; jeśli się nie pojawi, cofnij ten krok przed zastosowaniem kolejnego.
Krok 3: Trzymaj politykę restartu oddzielnie od interpretacji stanu zdrowia i spraw, aby każdy nadzorca wymagał kilku nieudanych testów w stanie ustabilizowanym. Po zmianie natychmiast sprawdź oczekiwany stan; jeśli się nie pojawi, cofnij ten krok przed zastosowaniem kolejnego.
healthcheck:
test: ["CMD", "appctl", "ready"]
start_period: 180s
interval: 30s
timeout: 5s
retries: 3
Interpretuj gałęzie powodzenia, niepowodzenia i wyjątku
Powodzenie oznacza, że aplikacja przechodzi ze stanu uruchamiania do stanu zdrowego dokładnie raz i pozostaje zdrowa podczas dwóch uruchomień na zimno. Zapisz dokładne obciążenie, wersję i czas, które dały ten wynik; lżejszy test nie jest dowodem rozwiązania pierwotnego problemu.
Niepowodzenie oznacza, że test przekracza limit czasu, gdy aplikacja wciąż robi postępy, albo przechodzi, zanim zależności będą użyteczne. Nie próbuj kompensować tego przez osłabienie wszystkich sąsiednich mechanizmów kontrolnych. Wróć do ostatniej czystej konfiguracji bazowej i ustal, czy rozbieżność dotyczy tożsamości, sieci, pamięci masowej, gotowości aplikacji czy przepustowości.
W przypadku wyjątku lub niejednoznacznego wyniku przywróć poprzedni test zdrowia i wyłącz każdego nadzorcę reagującego na stan zdrowia przed dostrajaniem aplikacji. Eskaluj dopiero wtedy, gdy niskoryzykowny test rozróżniający można powtórzyć, a dowody wskazują, że potrzebna jest głębsza zmiana platformy lub sprzętu.
Zweryfikuj trwałość przy pierwotnym obciążeniu serwera domowego
Powtórz tę samą ścieżkę klienta, rozmiar pliku, współbieżność, zdarzenie uśpienia lub ponownego uruchomienia oraz konkurencyjne obciążenie, których użyto w konfiguracji bazowej. Wykonaj co najmniej dwa cykle, aby sukces po rozgrzaniu pamięci podręcznej, jedno pomyślne ponowne połączenie lub pojedyncze czyste uruchomienie nie zostały pomylone z trwałością.
Potwierdź zarówno powodzenie, jak i ograniczenie skutków: aplikacja przechodzi ze stanu uruchamiania do stanu zdrowego dokładnie raz i pozostaje zdrowa podczas dwóch uruchomień na zimno, a niezależni użytkownicy, usługi, udziały i ścieżki administracyjne zachowują dotychczasowe działanie. Zapoznaj się z powiązanym przepływem pracy ZimaSpace, gdy zmiana dotyczy sąsiedniej granicy pamięci masowej, sieci lub odzyskiwania.
Zamknij zmianę dopiero wtedy, gdy sygnał akceptacji utrzymuje się, a wycofanie pozostaje możliwe do wykonania. Jeśli test przekracza limit czasu, gdy aplikacja wciąż robi postępy, albo przechodzi, zanim zależności będą użyteczne, zatrzymaj automatyzację, zachowaj logi i zapisaną konfigurację oraz wróć do ostatniego zweryfikowanego stanu zamiast nakładać kolejne zmiany.
FAQ dotyczące rozgałęziania zapytań, decyzja końcowa i test końcowy
Te pytania dotyczące rozgałęziania zapytań obejmują kolejne decyzje, których użytkownicy często szukają po zadziałaniu głównej konfiguracji. Rozszerzają zakres bez wprowadzania nieprzetestowanej ścieżki naprawczej.
Stosuj każdą odpowiedź tylko wtedy, gdy jej warunek odpowiada zmierzonemu środowisku. Różnice dotyczące wersji, protokołu, systemu plików, klienta i granicy zaufania mogą zmienić właściwą gałąź.
Przechowuj odpowiedzi razem z procedurą operacyjną i aktualizuj je po uaktualnieniach lub zmianach topologii. Każdy wyjątek rozszerzający dostęp do zapisu, osiągalność sieciową lub uprawnienia do usuwania wymaga nowego testu wycofania i odzyskiwania.
Czy test zdrowia powinien sprawdzać publiczny adres URL?
Zwykle nie. Użyj lokalnej ścieżki gotowości, aby DNS, TLS i odwrotny serwer proxy nie zamieniały jednego testu w sprawdzanie całego stosu.
Czy stan niesprawności restartuje usługę Compose?
Nie, nie samodzielnie w zwykłym Compose. Oddzielny orkiestrator lub nadzorca musi zareagować na ten stan, dlatego udokumentuj tę ścieżkę kontroli.
Jak długi powinien być start_period?
Użyj zmierzonego czasu uruchamiania na zimno dla wysokiego percentyla z dodatkowym marginesem, a następnie powtórz test po uaktualnieniach lub migracjach bazy danych.
Wniosek: Konfiguracja jest kompletna, gdy aplikacja przechodzi ze stanu uruchamiania do stanu zdrowego dokładnie raz i pozostaje zdrowa podczas dwóch uruchomień na zimno, gałąź niepowodzenia jest zrozumiana, a udokumentowane wycofanie nie zależy od zmienianego komponentu.
Protokół testu końcowego: przywróć zapisaną konfigurację bazową, zastosuj zatwierdzoną zmianę jeden raz, powtórz pierwotne obciążenie zbliżone do produkcyjnego, zweryfikuj sygnał powodzenia i granicę ograniczenia skutków, a następnie przećwicz wycofanie na danych przeznaczonych do usunięcia. Zachowaj zmianę tylko wtedy, gdy wszystkie pięć obserwacji jest zgodnych.
Wsparcie i wskazówki
Więcej do przeczytania

Czy galeria hostowana samodzielnie może zachować parowanie zdjęć Live Photo firmy Apple?
Warunkowa decyzja dotycząca domowego serwera w zakresie parowania Apple Live Photo, z kontrolowanymi testami, interpretacją wyników, wycofaniem zmian i konkretnymi odpowiedziami na często zadawane...

Czy można zaimportować Google Takeout i kopie zapasowe telefonu do jednej biblioteki zdjęć?
Warunkowa decyzja dotycząca serwera domowego do łącznego importu zdjęć, obejmująca kontrolowane testy, interpretację wyników, wycofanie zmian i skoncentrowane sekcje FAQ.

Czy Immich może korzystać z zewnętrznej biblioteki bez przejmowania własności plików?
Warunkowa decyzja dotycząca serwera domowego w sprawie własności zewnętrznej biblioteki Immich, obejmująca kontrolowane testy, interpretację wyników, wycofanie zmian i zwięzłą sekcję FAQ.

