Podstawowa baza danych, zmniejsza wydajność HA

Witam

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)

Według mnie zasoby są wystarczające do prawidłowego działania HA ( [ScreenShot w trakcie zadyszki)

Suma summarum
Mam zamiar przejść na inną bazę danych np. MariaBD ale obawiam się, że zmiana bazy nie rozwiąże problemu z “zadyszką” HA .

  • Nie potrzebuje wielkiej bazy danych , wystarczy zapis do 2 tygodni.
  • Nie chcę bazy zapisanej w kontenerach ( problematyczny dostęp do plików)

Według mnie
Coś blokuje poprawne działanie ( zapis-odczyt danych) HA, tylko co?

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.

Sensors: {{ states.sensor | count }}
Camera: {{ states.camera | count }}
Climate: {{ states.climate | count }}
timer: {{ states.timer | count }}
input_number: {{ states.input_number | count }}
Lights: {{ states.light | count }}
Switches: {{ states.switch | count }}
Binary sensors: {{ states.binary_sensor | count }}
Automations: {{ states.automation | count }}

sensor: (463)

- alarm_control_panel: (6) - automation: (140) - binary_sensor: (146) - button: (3) - calendar: (7) - camera: (8) - climate: (19) - cover: (3) - device_tracker: (10) - fan: (1) - group: (5) - image: (2) - input_boolean: (1) - input_datetime: (1) - input_number: (2) - input_select: (5) - light: (24) - lock: (4) - media_player: (12) - number: (11) - person: (2) - proximity: (3) - remote: (3) - scene: (4) - script: (53) - select: (16) - sensor: (463) - siren: (1) - sun: (1) - switch: (54) - update: (25) - vacuum: (3) - weather: (4) - zone: (29)

:thinking:Bazę miałem nawet ponad 2GB i działała, teraz przy 300- 600 MB dostaje zadyszki

Ostatecznie przejdę na inna bazę ale próbuje się dowiedzieć co jest przyczyną zadyszki.

:thinking: Może jakaś integracja dokonuje niekompatybilnych zapisów do bazy danych, jest to możliwe?

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.

:thinking: 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 ?

NodeRed - nie posiadam

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” .

:information_source: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ę.

Dziwna przypadek :joy:

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.

1 polubienie

Na jakim dysku dziala ta VM? Czy to dysk SSD?

Tak, na VM jest dysk SSD (64GB)
Bodajże 32GB jest przydzielone dla HA, z tego co widzę HA wykorzystuje 61% tego przydziału.
/
Glances


/
Teraz jest OK ale prawdopodobnie z 5 dni będzie zadyszka.
Poczekam, przeanalizuje i na pewno znajdę winowajcę :crossed_fingers: