Możesz zidentyfikować wąskie gardło w Home Assistant dopiero po odtworzeniu jednego stabilnego objawu. Wysokie użycie procesora, mało wolnej pamięci RAM, zajęty dysk lub szybko rosnący licznik sieciowy nie wystarczą same w sobie; ograniczeniem jest zasób, którego obciążenie zmienia się w tym samym czasie, gdy automatyzacja, pulpit, zapytanie do historii lub integracja zaczyna działać wolniej.
Najpierw ustabilizuj warunki testu. Za każdym razem używaj tej samej automatyzacji, urządzenia, pulpitu, zakresu historii i obciążenia w tle. Następnie obserwuj osobno procesor, pamięć, pamięć masową i sieć, zmieniając za każdym razem tylko jedno podejrzewane ograniczenie.
Zdefiniuj objaw, zanim zaczniesz analizować wykresy zasobów
„Home Assistant działa wolno” może oznaczać opóźnioną reakcję fizycznego urządzenia, pulpit renderujący się przez kilka sekund, wolno wczytującą się historię, integrację późno nawiązującą połączenie lub host zatrzymujący się podczas tworzenia kopii zapasowej. Każdy z tych objawów korzysta z innej ścieżki danych.
Wybierz jedno powtarzalne zdarzenie i oznacz je znacznikiem czasu. W przypadku światła uruchamianego ruchem zapisz moment nadejścia wyzwalacza i fizycznej reakcji. W przypadku historii zmierz czas od rozpoczęcia zapytania do pojawienia się pierwszego wyniku. W przypadku pulpitu rozdziel czas odpowiedzi serwera od renderowania w przeglądarce. W przypadku niedostępnej integracji zapisz dostępność sieci oraz wpisy w dziennikach integracji.
Nie zbieraj kilkunastu niezwiązanych ze sobą wykresów, szukając najwyższego skoku. Test powinien wskazać, na który etap systemu trzeba było czekać, gdy pojawiło się opóźnienie widoczne dla użytkownika.
Procesor jest ograniczeniem, gdy zadania ustawiają się w kolejce za obliczeniami
Procesor staje się prawdopodobnym podejrzanym, gdy Home Assistant lub powiązany proces stale zużywa dużo mocy obliczeniowej, objaw się nasila, a to samo obciążenie działa lepiej po usunięciu lub odizolowaniu tego zapotrzebowania na moc obliczeniową.
Metoda wykorzystania, nasycenia i błędów jest przydatna, ponieważ odróżnia zasób, który jest tylko zajęty, od takiego, w którym zadania ustawiają się w kolejce. W Home Assistant krótkotrwały skok użycia procesora ma mniejsze znaczenie niż powtarzalne nasycenie, które zbiega się z opóźnionymi automatyzacjami lub operacjami na bazie danych.
Sprawdź, który proces lub kontener powoduje obciążenie. Zadanie związane z kamerą, konserwacja bazy danych, lokalny kontener AI lub usługa towarzysząca może nasycać hosta, podczas gdy sam Home Assistant pozostaje lekki.
Pamięć RAM jest ograniczeniem, gdy zbiór roboczy powoduje presję
Linux wykorzystuje niewykorzystywaną pamięć do buforowania, dlatego mała ilość „wolnej” pamięci RAM nie oznacza automatycznie problemu. Obserwuj dostępną pamięć, użycie pamięci wymiany, presję pamięci, limity cgroups oraz zdarzenia OOM.
Wyjaśnienie zawarte na stronie Pamięć podręczna systemu plików w Linuksie może zostać odzyskana jest ważne podczas analizowania hosta Home Assistant: komputer może wykazywać wykorzystanie większości pamięci RAM, a mimo to nadal mieć zdrowy zapas.
Pamięć staje się najbardziej prawdopodobnym ograniczeniem, gdy to samo normalne obciążenie wielokrotnie zmniejsza dostępną pamięć, powoduje użycie pamięci wymiany lub przestoje odzyskiwania pamięci, osiąga limit kontenera albo prowadzi do zabijania procesów z powodu OOM. Dodaj pamięć RAM lub zmniejsz aktywny zbiór roboczy dopiero po zaobserwowaniu takiego wzorca.
Pamięć masowa jest ograniczeniem, gdy opóźnienie zmienia się wraz z pracą Rejestratora lub kopiami zapasowymi
Presja na pamięć masową może być ukryta za niskim użyciem procesora. Zapisy Rejestratora, zapytania do bazy danych, przepakowywanie danych, kopie zapasowe, aktualizacje i inne kontenery mogą oczekiwać na tym samym urządzeniu, podczas gdy rdzenie procesora pozostają w większości bezczynne.
Ostrzeżenie o zaległości Rejestratora Home Assistant było wyraźnie wiązane z systemami ograniczonymi przez procesor, operacje wejścia-wyjścia lub problem z bazą danych albo pamięcią masową. Dlatego błąd powinien skłonić do korelacji pomiarów, a nie do bezrefleksyjnej wymiany bazy danych.
Obserwuj opóźnienie dysku, czas oczekiwania na operacje wejścia-wyjścia, głębokość kolejki oraz momenty uruchamiania zadań Rejestratora i kopii zapasowych. Pamięć masowa jest trafniejszą diagnozą, gdy objaw podąża za tymi pomiarami i znika po usunięciu konkurujących operacji wejścia-wyjścia.
Sieć jest ograniczeniem, gdy serwer jest gotowy, ale ścieżka nie
Wąskie gardło sieciowe może wynikać z przepustowości, utraty pakietów, opóźnień DNS, niestabilności Wi-Fi, reguł zapory lub zależności od zdalnej usługi. Home Assistant może mieć bezczynny procesor i szybką lokalną pamięć masową, podczas gdy jedna integracja lub klient czeka na sieć.
Najpierw przetestuj serwer lokalnie, a następnie sprawdź urządzenie lub klienta, którego dotyczy problem, z tej samej sieci LAN. Jeśli żądania lokalne są szybkie, ale wolna jest konkretna sieć VLAN, segment Wi-Fi, nazwa DNS lub integracja korzystająca z chmury, naprawy szukaj w tej ścieżce.
Samo wykorzystanie sieci nie wystarczy. Interfejs o niewielkim obciążeniu może nadal działać nieprawidłowo z powodu rozwiązywania nazw, routingu lub utraty pakietów, a zajęty interfejs może pozostawać sprawny, jeśli ma zapas przepustowości i niski poziom strat.
Zmieniaj jedną zmienną i wymagaj, aby objaw się zmienił
| Zasób | Dowody wzmacniające diagnozę | Przydatny test zmiany |
|---|---|---|
| Procesor | Stałe nasycenie lub kolejki podczas występowania objawu | Wstrzymaj ciężki proces lub odizoluj obciążenie |
| Pamięć RAM | Presja, pamięć wymiany, OOM, limit cgroups | Ogranicz aktywne usługi lub zwiększ testowany limit |
| Pamięć masowa | Opóźnienie lub czas oczekiwania na wejście-wyjście rośnie wraz z pracą Rejestratora lub kopiami zapasowymi | Wstrzymaj konkurujące operacje wejścia-wyjścia lub przenieś dane stanu na szybszą pamięć masową |
| Sieć | Wolna jest wyłącznie ścieżka zdalna lub ścieżka do urządzenia | Użyj bezpośredniej trasy lokalnej lub alternatywnej ścieżki sieciowej |
Analiza ZimaSpace dotycząca opóźnienia pamięci masowej w ścieżkach sterowania Home Assistant jest dobrym przykładem tej metody: komponent staje się wąskim gardłem dopiero wtedy, gdy jego czas działania pokrywa się z rzeczywistym opóźnieniem sterowania.
Zakończ analizę, gdy jedna kontrolowana zmiana niezawodnie poprawi pierwotny objaw. To mocniejszy dowód niż dowolny pojedynczy procent wykorzystania i pozwala uniknąć kosztownej modernizacji niewłaściwej warstwy.
Wsparcie i wskazówki
Więcej do przeczytania

Czy podczas tworzenia kopii zapasowej Home Assistant Live należy zatrzymać usługę?
Wbudowane kopie zapasowe Home Assistant mogą działać na żywo; zwykłe kopie systemu plików powinny zatrzymać Home Assistant lub wstrzymać jego działanie, chyba że baza...

Dlaczego serwer Home Assistant nagrzewa się lub hałasuje w czasie bezczynności?
Zanim zmienisz ustawienia chłodzenia lub limity procesora, skoreluj skoki obciążenia wentylatora lub temperatury w Home Assistant z działaniem Rejestratora, kopiami zapasowymi, integracjami i współdzielonymi...

Kiedy lepiej zbudować Home Assistant od nowa zamiast go naprawiać?
Najpierw napraw najmniejszą uszkodzoną warstwę Home Assistant, następnie przywróć znany dobry stan, a odbudowę wykonuj tylko wtedy, gdy nie można ufać trwałej konfiguracji.

