Welches Speicherlimit sollten Sie für Home Assistant festlegen?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Es gibt kein einziges korrektes Speicherlimit für Home Assistant. Legen Sie die Grenze anhand Ihres gemessenen Spitzenverbrauchs fest, lassen Sie nutzbaren RAM für den Host und andere Container übrig und betrachten Sie jeden OOM-Kill als Hinweis darauf, dass das Limit oder die Arbeitslast untersucht werden muss.

Auf einem gemeinsam genutzten Heimserver reicht ein Leerlaufwert nicht aus: Recorder-Aktivitäten, Backups, das Neuladen von Integrationen, Dashboards und eine ausgelastete Automatisierungssequenz für das gesamte Haus können unterschiedliche Spitzenwerte erzeugen. Der sichere Weg besteht darin, zunächst eine Basis zu erfassen, ein reversibles Limit oberhalb der verifizierten Arbeitsspitze zu wählen, zu bestätigen, dass der Host weiterhin Reserven hat, und den ursprünglichen Auslastungszeitraum erneut zu testen, bevor Sie die Einstellung dauerhaft übernehmen.

Beginnen Sie mit dem Spitzenverbrauch, nicht mit einer allgemeinen RAM-Zahl

Messen Sie den Speicherverbrauch des Home-Assistant-Containers und des Hosts mehrere normale Tage lang gleichzeitig. Beziehen Sie einen Neustart, ein Backup, eine Datenbankbereinigung oder -neupackung, falls Sie eine solche verwenden, Dashboard-Aktivitäten und den ausgelastetsten Automatisierungszeitraum ein, den Sie sicher reproduzieren können. Erfassen Sie den Spitzenverbrauch des Containers, den verfügbaren Speicher des Hosts, die Swap-Aktivität und mögliche Änderungen der Reaktionszeit.

Ein Speicherlimit ist eine cgroup-Grenze und kein Leistungsziel. Wenn ein Container eine harte Grenze überschreitet, kann der Kernel einen Prozess beenden; ein Exit-Code von 137 zusammen mit dem Status „OOM-killed“ ist das aussagekräftige Signal. Deshalb ist der beobachtete Spitzenverbrauch wichtiger als ein Durchschnittswert oder eine kopierte Empfehlung.

Wenn der Speicherverbrauch während einer Aufgabe steigt und anschließend wieder zurückgeht, dimensionieren Sie das Limit anhand dieses reproduzierbaren Spitzenwerts plus Arbeitsreserve. Wenn der anonyme Speicher stundenlang weiter ansteigt und nach Ende der Arbeitslast nicht zurückgeht, sollten Sie nicht einfach höher dimensionieren, sondern eine undichte Integration, eine benutzerdefinierte Komponente oder eine Regression in einer Version untersuchen. Eine höhere Obergrenze kann den Absturz lediglich hinauszögern, ohne das Problem zu beheben.

Reservieren Sie Speicher für den Host und alle gemeinsam betriebenen Dienste

Listen Sie die Dienste auf, die auch dann reaktionsfähig bleiben müssen, wenn Home Assistant am stärksten ausgelastet ist: das Betriebssystem, Docker, eine Datenbank, MQTT, DNS, Dashboards, Mediendienste und Backup-Aufträge. Das Limit muss diese Dienste ebenso wie Home Assistant schützen; wenn Sie einem Container fast den gesamten installierten RAM zuweisen, verlagern Sie den Ausfall lediglich auf den Host.

Vergleichen Sie den Spitzenverbrauch von Home Assistant mit dem verfügbaren Speicher des Hosts im selben Zeitraum. Wieder freigebbarer Cache ist nicht mit Anwendungsspeicher gleichzusetzen, und Swap-Aktivität kann ein System zwar betriebsbereit erscheinen lassen, während die Gerätesteuerung langsam wird. Wenn dem Host die Reserven ausgehen, bevor Home Assistant seinen Spitzenverbrauch erreicht, reduzieren Sie überlappende Aufgaben oder verschieben Sie einen Dienst, bevor Sie die Obergrenze für Home Assistant weiter anpassen.

Dies ist eine Kapazitätsentscheidung und nicht nur eine Docker-Einstellung. Der zugehörige ZimaSpace-Leitfaden zum Messen von Home Assistant über den Warm-Cache hinaus erklärt, warum eine reproduzierbare Arbeitslast im kalten und ausgelasteten Zustand eine verlässlichere Basis liefert als eine bequeme Momentaufnahme im Leerlauf.

Wenden Sie ein reversibles Limit an und prüfen Sie, ob es durchgesetzt wird

Fügen Sie die Speichereinstellung in der Konfiguration hinzu, mit der der Container tatsächlich neu erstellt wird, etwa in Ihrer Compose-Datei oder Orchestrierungsoberfläche. Verlassen Sie sich nicht auf eine einmalige Live-Änderung, wenn die nächste Bereitstellung sie verwirft. Speichern Sie die vorherige Konfiguration, damit Sie sie sofort wiederherstellen können.

Prüfen Sie nach der Neuerstellung den laufenden Container und bestätigen Sie, dass das konfigurierte Limit sichtbar ist. Überwachen Sie anschließend die Containerauslastung, den verfügbaren Speicher des Hosts, den Swap, die Neustartanzahl und die Latenz. Eine angezeigte Einstellung, die von der Host-cgroup nicht durchgesetzt wird, vermittelt falsche Sicherheit, insbesondere bei verschachtelter Virtualisierung.

Wenn der Container neu startet, erhöhen Sie das Limit nicht automatisch. Prüfen Sie, ob die Laufzeitumgebung OOMKilled und den Exit-Code 137 meldet. Falls nicht, untersuchen Sie einen anderen Beendigungsgrund. Falls ja, vergleichen Sie den Zeitstempel mit der Arbeitslast: Ein kurzer, reproduzierbarer Spitzenwert deutet auf eine unzureichende Arbeitsreserve hin, während ein stetiger Anstieg auf ein Speicherleck oder eine außer Kontrolle geratene Integration hindeutet.

Testen Sie erneut unter der ursprünglichen ausgelasteten Home-Assistant-Arbeitslast

Wiederholen Sie genau das für die Basis verwendete Szenario: Laden Sie dieselben Integrationen neu, öffnen Sie dieselben Dashboards, führen Sie dieselbe Steuerungssequenz für das gesamte Haus aus und beziehen Sie dieselben Backup- oder Recorder-Aktivitäten ein. Eine geänderte Arbeitslast würde lediglich beweisen, dass ein weniger ausgelastetes System funktioniert.

Ein erfolgreiches Ergebnis bedeutet, dass der Container unterhalb der Grenze bleibt, ohne OOM-Ereignisse auftreten, der Host nutzbaren Speicher behält, der Swap keine Verzögerungen bei der Steuerung verursacht und die Automatisierungen mit normaler Geschwindigkeit abgeschlossen werden. Starten Sie zweimal neu und prüfen Sie erneut nach dem nächsten geplanten Hintergrundauftrag, damit das Ergebnis auch nach einer Neuerstellung und zeitgesteuerten Aufgaben Bestand hat.

Machen Sie das neue Limit rückgängig, wenn die Gerätesteuerung unzuverlässig wird, der Container in eine Neustartschleife gerät oder der Druck auf den Host weiterhin kritisch bleibt. Gehen Sie zur Isolierung von Integrationen oder zu einem Versionsvergleich über, wenn der Speicherverbrauch nach Ende der auslösenden Arbeitslast weiter steigt; dann ist die Anpassung des Limits nicht mehr die wichtigste Maßnahme.

FAQ

Sollte Home Assistant immer ein hartes Speicherlimit haben? Auf einem gemeinsam genutzten Docker-Host kann eine getestete Grenze andere Dienste schützen. Eine dedizierte HAOS-Maschine oder VM wird anders dimensioniert. Übertragen Sie daher kein Container-Limit auf eine VM-Zuweisung, ohne den vollständigen Gast zu messen.

Ist ein hoher belegter Speicher automatisch ein Leck? Nein. Cache und kurzzeitige Arbeitsspitzen können normal sein. Achten Sie auf anonymen Speicher, der stetig weiter wächst, OOM-Ereignisse, Neustartschleifen oder eine schlechtere Latenz nach Ende der Arbeitslast.

Sollte man den Swap deaktivieren? Nicht als ersten Schritt. Ermitteln Sie zunächst, ob der Swap den Speicherdruck auf dem Host verschleiert oder einen abrupten Ausfall verhindert. Ändern Sie ihn anschließend nur mit einem getesteten Rücksetzpfad und ausreichend physischem RAM für die gesamte Arbeitslast.

Support & Tipps

Mehr zum Lesen

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.