Ottimizza le connessioni al database di Home Assistant distribuendo il totale tra tutti i container, invece di massimizzare un singolo pool. Lascia spazio per l'amministrazione del database e le attività in background, quindi verifica Recorder durante l'avvio simultaneo e nel periodo normale di scrittura più intenso.
Su un host MariaDB o PostgreSQL condiviso, il numero importante è la somma delle possibili connessioni di ogni servizio moltiplicata per il numero di istanze in esecuzione, più l'accesso per la manutenzione e le emergenze. Misura insieme connessioni attive, inattive, in attesa e non riuscite, oltre alla latenza delle query e al carico dello storage. Se usi SQLite, fermati qui: spostare più container sullo stesso file di database non è ottimizzazione del pool di connessioni.
Conferma la topologia del database e la domanda attuale di connessioni
Documenta il motore e la versione del database, l'URL di Recorder di Home Assistant, ogni altro container client, il numero di repliche, il pool configurato, il timeout, il comportamento dei tentativi e la policy di riavvio. Conferma che ogni servizio disponga di un proprio utente del database, così da poter attribuire correttamente le sessioni attive.
Misura il numero massimo di connessioni del database, le sessioni attuali per utente e stato, il picco delle sessioni durante l'avvio e il carico normale, le attese, la latenza delle query, l'utilizzo di CPU e memoria e la latenza dello storage. Un numero elevato di connessioni può essere il sintomo di attività lente, non la causa; aggiungere sessioni a un disco saturo di solito aumenta la contesa.
Usa la guida ZimaSpace sull'affidabilità dei database esterni di Home Assistant per verificare backup, permessi dello schema, supporto del motore e limiti degli aggiornamenti prima di ottimizzare la concorrenza.
Definisci un budget delle connessioni tra tutti i container
Riserva connessioni per l'amministrazione del database, il monitoraggio, le migrazioni, i backup e le attività interne del motore. Distribuisci il budget applicativo rimanente tra i servizi in base al lavoro concorrente misurato, non alla RAM installata o a un valore copiato per il numero massimo di connessioni.
Le indicazioni sui pool di connessioni per i servizi con più istanze rendono esplicita l'aritmetica fondamentale: il database deve supportare la dimensione del pool moltiplicata per il numero di istanze. Il concetto si applica in generale, mentre ogni versione di Home Assistant e del database richiede comunque impostazioni supportate specifiche.
Inizia con pool e code a dimensione limitata. Se la domanda supera brevemente il pool, attendere può essere più sicuro che aprire sessioni illimitate; se il tempo di attesa diventa visibile all'utente, analizza la latenza delle query e dello storage prima di aumentare il pool. Mantieni timeout espliciti per la connessione e l'acquisizione, così gli errori vengono segnalati invece di lasciare le richieste bloccate indefinitamente.
Controlla riavvii, tentativi e connessioni inattive
Scagliona l'avvio dei container, così Home Assistant, dashboard, analisi, backup e importatori non si riconnettono e non eseguono migrazioni tutti contemporaneamente. Usa controlli di integrità che verifichino la reale disponibilità del database, ma evita cicli di tentativi troppo ravvicinati che creano un picco di connessioni mentre il database si sta ripristinando.
Imposta la durata massima delle connessioni inattive e il comportamento di riciclo tenendo conto dei timeout del database, del driver, del proxy e della rete. Un pool che conserva troppo a lungo sessioni non più valide causa errori; un pool che ricrea le connessioni in modo eccessivo aggiunge il sovraccarico di autenticazione e configurazione. Modifica un solo livello di timeout alla volta.
Se introduci un proxy per le connessioni, verifica semantica delle transazioni, migrazioni, istruzioni preparate e compatibilità con Home Assistant in un ambiente di test. Un proxy non sostituisce la diagnosi di query lente, lock, memoria o storage.
Riduci il lavoro sul database prima di aumentare la concorrenza
Esamina la conservazione di Recorder, le entità ad alta frequenza escluse, il comportamento della pulizia, le dimensioni del database e le query lente. Se una query di Home Assistant mantiene a lungo una connessione, ridurre i dati non necessari o risolvere la latenza dello storage può migliorare il throughput in modo più sicuro che aggiungere sessioni.
Separa le analisi pesanti o le metriche a lungo termine da Recorder solo quando la nuova pipeline dispone di un modello chiaro di gestione e conservazione. Non indirizzare container non correlati allo schema di Home Assistant e non consentire loro di scrivere nelle tabelle di Recorder; usa API supportate o database indipendenti.
Ricontrolla la memoria per connessione, la configurazione dei buffer, le attese sui lock e la latenza dello storage prima di aumentare il limite del server del database. Il server deve rimanere reattivo al picco pianificato, con capacità sufficiente per il ripristino e l'amministrazione.
Verifica in condizioni di avvio concorrente e carico di picco di Recorder
Riavvia il database e i container client nell'ordine pianificato, quindi ripeti con la sovrapposizione sicura più intensa: avvio di Home Assistant, query dello storico, importazioni, backup e il picco di un altro servizio. Osserva il numero di connessioni, l'attesa per l'acquisizione, gli errori, la latenza delle query, i lock e l'I/O dell'host.
Una configurazione valida mantiene reattivi i comandi e lo storico di Home Assistant, resta entro il budget delle connessioni, preserva l'accesso amministrativo e svuota le code temporanee dopo il picco. Riavvia due volte e osserva la successiva finestra di manutenzione programmata per confermare la persistenza.
Esegui il rollback se peggiorano i timeout, gli errori di troppe connessioni, la pressione sulla memoria del database o l'arretrato di Recorder. Inoltra l'escalation con la topologia, il numero di sessioni per utente, le impostazioni del pool, le prove delle query lente e le metriche dello storage, invece di indicare un solo numero massimo di connessioni.
Supporto e consigli
Altro da leggere

Come evitare duplicati di processi o importazioni in Home Assistant
Usa tracce e chiavi operative univoche per rendere sicuri i nuovi tentativi di automazioni e importazioni, evitando di generare azioni o record duplicati.

Come riparare Home Assistant dopo che il volume del database si è riempito
Recupera da un volume Recorder completamente pieno senza eliminare prima le prove, poi riduci la crescita e dimostra che la cronologia e le automazioni...

Perché Home Assistant ricrea i file mancanti con il proprietario sbagliato?
Fai corrispondere l’UID e il GID di runtime al percorso sull’host, ripara solo i file interessati quando è arrestato e verifica la proprietà dopo...

