Mam problem z bazą danych który próbuje rozwiązać.
Krótka historia:
HA mam od kilku lat, pierwsze uruchomienie odbyło się na Raspberry 3.
Po około jednego roku działania przeniosłem całą konfiguracje na VM .
Następne 2 lata HA z bazą danych o rozmiarze do 2 GB działał bardzo dobrze.
Objawy:
Około 2 miesięcy temu zauważyłem, że HA jest mało nieresponsywne.(otwarcie karty, dziennika, historii… trwało “wieczność”).
Uruchomienie HA trwało do kilkunastu minut.
Próby naprawy:
Zacząłem od usunięcia niepotrzebnych integracji, poprawienia wcięć w kodach konfiguracyjnych(configuration.yam, sensor.yaml itp.)
Pozbyłem się kolorowanych stanów encji w kartach ( jeśli encja “on” to kolor x itp.).
“Ręce opadły”- usunę całą konfiguracje HA i zacznę od nowej:
Ale przed tą decyzją postanowiłem usunąć tylko bazę danych i okazało się że po restarcie HA cały system działa bardzo dobrze.
Wnioskując, że za całym problemem stoi BD, rozpocząłem monitorowanie zasobów HA.
Monitorowanie:
Tydzień pracy na nowej bazie danych - (od super działania do zadyszki)
Zmień bazę na mariaDB albo wyklucz z zapisu do bazy historię sensorów, której nie potrzebujesz, przez exclude Recorder - Home Assistant
U mnie z mariaDB HA dostaje zadyszki gdy baza ma więcej jak 4,5-5GB, do tej wartości chodzi super płynnie.
PS: ile sensorów itd masz w HA?
Wklej to w Narzędzia deweloperskie → Szablon, po prawej wyświetli Ci wartości, ja mam ok 350 sensorów i 100 przełączników, do tego 40 automatyzacji.
Baza SQLLite (domyślna baza) jest słaba jeżeli chodzi o dużo rekordów trzymanych w niej, może masz jakiś sensor co zbyt często zapisuje do bazy.
Jak nie zależy Ci na pewnej i stabilnej historii danych trzymanych w bazie a na maszynie z HA masz dużo RAM to można zrobić bazę, trzymaną w RAM - wtedy HA śmiga jak rakieta.
Dokonując w wpisu w konfiguracji opóźniłem zapis nawet do kilku sekund (commit_interval: 10)
trzymaną w RAM
O ciekawe, a co wyrazie restartu VM i kopa zapasowa - Masz może jakiegoś linka do informacji o możliwości zapisu do RAM?.
Mam około 4GB wolnego RAM`u - Chętnie poczytam na ten temat.
Czy przy problemach z zapisem-odczytem bazy procesor i pamięć HA była by na tym samym poziomie czy więcej wykorzystywał by zasobów by poradzić sobie z dodatkowym obciążeniem ?
/
U mnie czy baza jest pusta czy przy “zadyszce” procesor i ram jest na takim samym poziomie
Raczej nie, dużych rozmiarów szukaj w states i state_attributes
Po kilku ostatnich aktualizacjach zauważyłem znaczny wzrost rozmiaru DB, jakieś 2GiB. Coś sieje do DB, NodeRed ?
Przez 2 miesiące zauważyłem tylko raz wpis w logach na temat Recorder - (Alla) HA nie był w stanie zapisać, ponieważ rozmiar jest ponad 160000 bitów. I dotyczyła integracja “Pushbullet” .
Po usunięciu “Pushbullet” problem nadal występuje.
Najwięcej wpisów generuje sensor “Watt” i inne związane z energią ale HA jest raczej dostosowane do takiego ruchu w BD
/
Jak już wspomniałem “sianie” powinny zwiększyć wykorzystanie procesora i RAMu ale jak widać na ScreenShot procesor i Ram nie reaguje na zadyszkę.
Tutaj masz na temat bazy danych w ram, można ją trzymać tylko w RAM, albo raz na jakiś czas zapisać na dysku, aby przy np. ponownym uruchomieniu HA odzyskać ją z dysku - to rozwiązania głównie dedykowane do malinek z katami SD.
Jakbyś miał bazę mariadb to można zainstalować dodatek phpmyadmin i przez niego podejrzeć co jest w bazie danych - wtedy widać, co jest największym obciążeniem w bazie danych, a jeżeli nie jest potrzebna historia tego sensora to go wykluczyć z bazy - ja tak zrobiłem u siebie np. z sensorami, które zapisuje do influx i pokazuje jako wykres przez grafane.