Home Assistant의 메모리 사용량이 높은 상태로 유지되는 이유는 작업이 끝난 후에도 프로세스나 호스트가 재사용 가능한 페이지를 보유하기 때문일 수 있습니다. 하지만 동일한 주기를 반복할 때 고점이 계속 상승하는 계단식 패턴이 나타난다면 통합 구성 요소, 애드온 또는 특정 버전의 메모리 누수를 의미할 수 있습니다.
백업, 데이터베이스 작업, 다시 로드 또는 업데이트로 인해 상주 메모리와 파일 시스템 캐시가 증가한 뒤, 그래프가 즉시 이전 수준으로 돌아가지 않을 수 있습니다. 프로세스, 컨테이너, VM, 스왑 및 호스트 캐시를 각각 별도로 기록하고, 동일한 트리거를 반복한 다음, 단일 시점의 스냅샷이 아니라 증가 추세와 서비스 상태를 기준으로 판단하세요.
어떤 메모리 수치가 높은 상태로 유지되는지 확인하기
동일한 시점에 Home Assistant 프로세스의 상주 메모리, 컨테이너 또는 VM 사용량, 호스트에서 사용 가능한 메모리, 캐시, 스왑 및 cgroup 제한을 기록하세요. 회수 가능한 캐시가 포함된 호스트 그래프는 프로세스의 상주 집합이 보여 주는 내용과는 다른 질문에 답합니다.
최종 로그 이벤트, CPU 활동, 데이터베이스 I/O 및 통합 구성 요소의 상태를 비교하여 화면에 완료로 표시된 작업이 실제로 끝났는지 확인하세요. 인터페이스에 완료로 표시된 후에도 백그라운드 정리, 색인 생성, 재시도 또는 애드온 작업이 계속될 수 있습니다.
프로세스 메모리가 안정적이고 스왑 압박 없이 호스트의 사용 가능한 메모리도 충분하다면 정상적인 주기를 한 번 더 관찰하세요. 프로세스 메모리, 스왑 또는 OOM 압박이 계속 증가한다면 시간순 기록을 보존하고 트리거를 격리하세요.
동일한 작업량을 반복하고 고점을 확인하기
동일한 데이터 크기의 제한된 작업을 두세 번 실행하고, 각 실행 후 일정한 대기 시간을 두세요. 작업 전 기준값, 최고점, 작업 후 유지되는 고점, 그리고 다음 주기가 이전 주기보다 높은 지점에서 시작하는지를 기록하세요.
업그레이드 후 높은 메모리 사용량 사례가 현재 모든 시스템에 공통된 결함임을 입증하는 것은 아닙니다. 다만 영향을 받은 시스템에서 업그레이드 전후의 고점을 비교할 근거가 됩니다.
스왑 증가 없이 안정화되는 유사한 고점은 일반적으로 긴급 상황이 아니라 관찰 대상으로 볼 수 있습니다. 동일한 주기마다 상승하는 계단식 패턴이 나타나 시스템 속도가 느려지거나 제한에 가까워진다면 격리가 필요합니다.
코어, 통합 구성 요소, 애드온 및 호스트 캐시 분리하기
Home Assistant 프로세스를 각 애드온 또는 인접 컨테이너와 비교한 다음, 가능한 경우 제어된 안전 모드 또는 사용자 지정 통합 구성 요소 제외 테스트를 수행하세요. 주기마다 구성 요소 하나만 변경하고 원래 트리거는 동일하게 유지하세요.
통합 구성 요소 중심의 격리와 시작 시간을 단서로 활용하되, 가장 느린 통합 구성 요소가 메모리를 점유한다고 단정하지는 마세요.
사용자 지정 통합 구성 요소를 제외했을 때 증가가 멈춘다면, 증가 추세가 다시 나타날 때까지 해당 구성 요소를 그룹별로 다시 활성화하세요. 애드온의 메모리 사용량이 증가한다면 해당 서비스를 복구하세요. 사용 가능한 메모리가 충분한 상태에서 호스트 캐시만 증가한다면 그래프를 낮추기 위해 제한을 더 작게 설정하지 마세요.
상황에 맞는 조치를 적용하고 다시 재현하기
확인된 구성 요소만 업데이트하거나 비활성화하고, 제한되지 않은 작업량을 줄이며, 데이터베이스 또는 로깅 반복 문제를 수정하세요. 정상적인 최고 사용량을 측정한 후에만 컨테이너 제한을 조정하세요. 검증 단계로 한 번만 재시작한 다음 원래 작업을 반복하세요. 재부팅만으로는 해결책이 되지 않습니다.
Home Assistant 성능 한계 모델의 종속성 분석은 스토리지 또는 애드온 압박을 Core 메모리 증가로 잘못 판단하는 일을 방지하는 데 도움이 됩니다.
반복 주기가 스왑, OOM 또는 지연 시간 문제 없이 제한된 고점에서 안정화되면 중단하세요. 정리된 재현 경로에서도 증가가 계속된다면 버전, 설치 유형, 프로세스 및 호스트 지표, 트리거 단계, 안전 모드 비교 결과와 시간 흐름 그래프를 첨부하여 문제를 제기하세요.
지원 및 팁
더 읽어보기

여러 컨테이너에서 동시 실행할 때 Immich 데이터베이스 연결을 최적화하는 방법
먼저 max_connections를 늘리지 마세요. Immich 세션을 측정하고, 모든 컨테이너의 요구량을 합산하며, 관리용 여유 공간을 확보한 뒤, 실제로 확인된 병목만 조정하세요.

Immich에서 중복 작업 또는 가져오기를 방지하는 방법
반복 작업과 중복 자산을 분리하세요. 하나의 표준 수집 경로를 사용하고, 재시도와 경로 변경을 제어한 다음, 소규모 코호트에서 재진입을 테스트하세요.

데이터베이스 볼륨이 가득 찬 후 Immich를 복구하는 방법
공간을 확보하기 위해 PostgreSQL WAL을 절대 삭제하지 마세요. Immich 쓰기를 중지하고, 데이터베이스 상태를 보존한 뒤, 안전하게 용량을 추가하고 PostgreSQL을 복구한 다음 재발을 방지하세요.

