Så optimerar du Home Assistant-databasanslutningar för samtidiga containrar

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

Optimera Home Assistants databasanslutningar genom att budgetera det totala antalet över alla containrar, inte genom att maximera en enda pool. Lämna utrymme för databasadministration och bakgrundsarbete, och validera sedan Recorder under samtidig uppstart och den mest belastade normala skrivperioden.

På en delad MariaDB- eller PostgreSQL-värd är det viktiga talet summan av varje tjänsts möjliga anslutningar multiplicerat med antalet körande instanser, plus underhålls- och nödåtkomst. Mät aktiva, inaktiva, väntande och misslyckade anslutningar tillsammans med frågelatens och lagringsbelastning. Om du använder SQLite kan du sluta läsa här: att flytta fler containrar till samma databasfil är inte finjustering av anslutningspoolen.

Bekräfta databasens topologi och det aktuella anslutningsbehovet

Dokumentera databasmotor och version, Home Assistant Recorder-URL, alla andra klientcontainrar, antal repliker, konfigurerad pool, tidsgräns, omförsöksbeteende och omstartspolicy. Bekräfta att varje tjänst har en egen databasanvändare så att aktiva sessioner kan kopplas till rätt tjänst.

Mät databasens maximala antal anslutningar, aktuella sessioner per användare och tillstånd, högsta antal sessioner under uppstart och normal belastning, väntetider, frågelatens, CPU, minne och lagringslatens. Ett högt antal anslutningar kan vara ett symtom på långsamt arbete snarare än orsaken; att lägga till fler sessioner på en överbelastad disk ökar vanligtvis bara konkurrensen.

Använd ZimaSpace-guiden om tillförlitlighet för externa Home Assistant-databaser för att kontrollera säkerhetskopiering, schemabehörigheter, stöd för databasmotorn och gränser för uppgraderingar innan du finjusterar samtidigheten.

Skapa en anslutningsbudget för alla containrar

Reservera anslutningar för databasadministration, övervakning, migreringar, säkerhetskopior och interna motoruppgifter. Fördela den återstående applikationsbudgeten mellan tjänsterna utifrån uppmätt samtid igt arbete, inte installerat RAM eller ett kopierat värde för maximalt antal anslutningar.

Riktlinjer för anslutningspooler i tjänster med flera instanser tydliggör den viktiga beräkningen: databasen måste stödja poolstorlek multiplicerad med antal instanser. Principen gäller brett, men varje version av Home Assistant och databasen kräver fortfarande sina egna inställningar som stöds.

Börja med begränsade pooler och köer. Om efterfrågan kortvarigt överstiger poolen kan väntan vara säkrare än att öppna obegränsat många sessioner; om väntetiden blir märkbar för användaren bör du undersöka fråge- och lagringslatens innan du ökar poolen. Behåll uttryckliga tidsgränser för anslutning och hämtning av anslutningar så att fel synliggörs i stället för att förbli hängande på obestämd tid.

Styr omstarter, omförsök och inaktiva anslutningar

Sprid ut uppstarten av containrar så att Home Assistant, instrumentpaneler, analysverktyg, säkerhetskopior och importverktyg inte alla ansluter på nytt och kör migreringar samtidigt. Använd hälsokontroller som testar att databasen faktiskt är redo, men undvik täta omförsöksloopar som skapar en anslutningsstorm medan databasen återhämtar sig.

Ställ endast in livslängd för inaktiva anslutningar och återanvändningsbeteende med hänsyn till databasens, drivrutinens, proxyns och nätverkets tidsgränser. En pool som behåller döda sessioner för länge orsakar fel; en pool som byter anslutningar för aggressivt tillför autentiserings- och initieringskostnader. Ändra ett lager av tidsgränser i taget.

Om en anslutningsproxy införs ska du verifiera transaktionssemantik, migreringar, förberedda instruktioner och kompatibilitet med Home Assistant i en testmiljö. En proxy ersätter inte analys av långsamma frågor, lås, minne eller lagring.

Minska databasarbetet innan du ökar samtidigheten

Granska Recorders lagringstid, exkluderade högfrekventa entiteter, rensningsbeteende, databasstorlek och långsamma frågor. Om en Home Assistant-fråga håller en anslutning under lång tid kan minskning av onödiga data eller åtgärdande av lagringslatens förbättra genomströmningen säkrare än att lägga till sessioner.

Separera tung analys eller långsiktiga mätvärden från Recorder endast när den nya pipelinen har en tydlig modell för ägarskap och lagringstid. Rikta inte orelaterade containrar mot Home Assistants schema och låt dem inte skriva till Recorders tabeller; använd API:er som stöds eller separata databaser.

Kontrollera minne per anslutning, buffertkonfiguration, väntande lås och lagringslatens igen innan du höjer databasserverns gräns. Servern måste förbli responsiv vid den planerade högsta belastningen och ha tillräcklig kapacitet för återställning och administration.

Validera under samtidig uppstart och högsta Recorder-belastning

Starta om databasen och klientcontainrarna i planerad ordning och upprepa sedan med den mest belastade säkra överlappningen: Home Assistant-uppstart, historikfrågor, importeringar, säkerhetskopior och en annan tjänsts högsta belastning. Övervaka antal anslutningar, väntetid för att hämta anslutningar, fel, frågelatens, lås och I/O för värden.

En godkänd konfiguration håller Home Assistants styrning och historik responsiva, håller sig inom anslutningsbudgeten, bevarar administratörsåtkomst och tömmer tillfälliga köer efter belastningstoppen. Starta om två gånger och observera nästa schemalagda underhållsfönster för att bekräfta att inställningarna består.

Återställ ändringarna om tidsgränser, fel om för många anslutningar, minnestryck i databasen eller eftersläpning i Recorder förvärras. Eskalera med topologin, sessionsantal per användare, poolinställningar, belägg för långsamma frågor och lagringsmätvärden i stället för ett enda värde för maximalt antal anslutningar.

Support och tips

Mer att läsa

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.