Home Assistantのメモリ使用量が高いままになるのは、処理後もプロセスやホストが再利用可能なページを保持している可能性があるためです。ただし、同一サイクルを繰り返すたびに高止まりの水準が上昇する場合は、インテグレーション、アドオン、または特定バージョンに依存したメモリリークを示している可能性があります。
バックアップ、データベースタスク、再読み込み、更新によって、常駐メモリやファイルシステムキャッシュが増加し、グラフがすぐに以前の水準へ戻らないことがあります。プロセス、コンテナ、VM、スワップ、ホストキャッシュの状況を個別に記録し、同じトリガーを繰り返して、単一のスナップショットではなく、増加傾向とサービスの健全性を判断してください。
高止まりしているメモリの数値を確認する
同じタイムスタンプで、Home Assistantプロセスの常駐メモリ、コンテナまたはVMの使用量、ホストの利用可能メモリ、キャッシュ、スワップ、cgroupの制限値を記録します。回収可能なキャッシュを含むホストのグラフは、プロセスの常駐メモリとは異なる情報を示します。
最終ログイベント、CPUアクティビティ、データベースI/O、インテグレーションの状態を比較し、表示されているジョブが実際に完了しているか確認します。バックグラウンドのクリーンアップ、インデックス作成、再試行、アドオンの処理は、インターフェースが完了を報告した後も続くことがあります。
プロセスのメモリが安定しており、ホストに十分な利用可能メモリがあり、スワップの圧迫もない場合は、通常のサイクルをもう一度観察します。プロセス、スワップ、またはOOMの圧力が上昇し続ける場合は、時系列を保存してトリガーを切り分けてください。
同じワークロードを繰り返し、高止まりの状態を読み取る
同じデータサイズで、同じ範囲のジョブを2〜3回実行し、各実行後に一定時間のアイドル期間を設けます。実行前の基準値、ピーク値、実行後の高止まり値、そして次のサイクルが前回より高い状態から始まるかどうかを記録します。
アップグレード後の高いメモリ使用量という事例だけでは、現在も普遍的な不具合が存在するとは断定できません。ただし、影響を受けているシステムで、アップグレード前後の高止まり値を比較する根拠にはなります。
スワップの増加を伴わず、同様の高止まり状態が安定している場合は、通常、緊急対応ではなく観察すべき状態です。同一サイクルのたびに階段状に上昇し、最終的にシステムの動作を遅くしたり、制限値に近づいたりする場合は、切り分けが必要です。
コア、インテグレーション、アドオン、ホストキャッシュを切り分ける
Home Assistantのプロセスを各アドオンや近接するコンテナと比較し、利用可能であれば、管理されたセーフモードまたはカスタムインテグレーションの除外テストを行います。1サイクルにつき1つのコンポーネントだけを変更し、元のトリガーは同一に保ちます。
インテグレーションを中心とした切り分けと起動タイミングは手がかりとして利用し、最も遅いインテグレーションがメモリを占有している証拠だと決めつけないでください。
カスタムインテグレーションを無効にして増加が止まる場合は、増加傾向が再び現れるまで、グループ単位で再有効化します。アドオンのメモリが増加する場合は、そのサービスを修復します。利用可能なメモリが健全なままホストキャッシュだけが増加している場合は、グラフを低下させるためだけに制限値を小さくしないでください。
適合する対策を適用し、再度再現する
確認されたコンポーネントだけを更新または無効化する、上限のないワークロードを縮小する、データベースやログのループを修正する、または通常のピーク値を測定した後でコンテナの制限値を調整します。検証の区切りとして1回だけ再起動し、その後、元の作業を繰り返します。再起動だけでは解決策になりません。
Home Assistantのパフォーマンス上限モデルにおける依存関係の分析は、ストレージやアドオンの圧迫をCoreのメモリ増加と誤認するのを防ぐのに役立ちます。
繰り返しのサイクルが、スワップ、OOM、またはレイテンシー障害を伴わず、一定の範囲内の高止まり状態に収束したら終了します。クリーンで再現可能な手順でも増加が続く場合は、バージョン、インストール方式、プロセスとホストのメトリクス、トリガー手順、セーフモードとの比較、時系列グラフを添えてエスカレーションしてください。
サポートとヒント
もっと読む

同時稼働するコンテナ向けに Immich のデータベース接続を最適化する方法
まず max_connections を増やさないでください。Immich のセッション数を測定し、すべてのコンテナの需要を合計し、管理用の余裕を確保したうえで、実証されたボトルネックだけを調整してください。

Immichでジョブやインポートの重複を防ぐ方法
重複するジョブと重複アセットを分離します。正規の取り込み経路を1つに統一し、再試行とパス変更を制御してから、小規模なコホートで再エントリーをテストします。

データベースのボリュームがいっぱいになった後に Immich を修復する方法
空き容量を確保するためにPostgreSQLのWALを削除しないでください。Immichへの書き込みを停止し、データベースの状態を保持したまま安全に容量を追加し、PostgreSQLを復旧してから、再発を防止してください。

