Home Assistant가 “동시에 처리할 수 있는 작업 수가 얼마나 되는가?”라는 질문에 대해 의미 있는 단일 답을 제시하기는 어렵습니다. 짧은 비동기 작업 10개가 이벤트 루프를 차단하는 통합 하나보다 부담이 적을 수 있고, 대기열에 들어간 자동화 50개도 대부분의 시간을 서로 독립적인 I/O를 기다리며 보낸다면 문제가 되지 않을 수 있습니다.
유용한 한계는 작업을 추가했을 때 중요한 제어 경로에서 반복적인 지연이 발생하기 시작하는 지점입니다. 이벤트 처리가 지연되거나, 자동화 대기열이 늘어나거나, 서비스 호출이 목표 시간 내에 실행되지 않거나, 공유 CPU·메모리·스토리지·네트워크 리소스에 압박이 생기는 경우가 이에 해당합니다. 따라서 동시성은 작업 수보다 먼저 지연 시간과 대기열의 문제입니다.
Home Assistant 동시성은 asyncio 이벤트 루프에서 시작됩니다
Home Assistant Core는 Python asyncio를 기반으로 구축되었습니다. 구성 요소는 작업을 예약하고, 협력적 비동기 코드는 I/O를 기다리는 동안 양보하므로 각 통합에 운영체제 스레드 하나를 전용으로 할당하지 않고도 다른 작업이 진행될 수 있습니다.
현재 Home Assistant 개발자 문서에서는 Core가 중앙 이벤트 루프를 통해 구성 요소 작업을 예약하고, 작업이 대기 중에 정상적으로 일시 중단되는 방식에 의존한다고 설명합니다. 따라서 “동시 실행”은 모든 작업이 정확히 같은 순간에 CPU 명령을 실행한다는 뜻이 아닙니다.
실용적인 동시성 분석에서도 같은 구분을 합니다. 비동기 작업은 경과 시간상 겹쳐 실행될 수 있지만, 실제 이벤트 루프 실행은 await 지점 사이에서 직렬화된다는 것입니다. 처리 용량은 각 작업이 루프를 얼마나 오래 점유하는지와 무엇을 기다리는지에 따라 달라집니다.
차단 작업은 여러 작업의 성능을 동시에 저하시킬 수 있습니다
가장 심각한 동시성 문제는 대개 “자동화가 너무 많다”는 것이 아닙니다. 관련 없는 상태 업데이트와 콜백이 실행되지 못할 정도로 이벤트 루프를 오래 차단하는 작업 하나가 원인인 경우가 많습니다.
Home Assistant는 이벤트 루프에서 차단 작업이 호출되는 동안 시스템 전체를 멈추게 한다고 명확히 경고합니다. 여기에는 제대로 처리되지 않은 파일 I/O, 네트워크 라이브러리, sleep 호출, 통합 내부의 무거운 동기 작업 등이 포함됩니다.
따라서 용량 테스트 결과를 해석하는 방식도 달라져야 합니다. 전체 CPU 사용률이 낮은데도 특정 통합을 활성화했을 때 로컬 제어 지연이 증가한다면, 문제는 프로세서 용량 부족이 아니라 이벤트 루프 차단일 수 있습니다.
자동화 모드는 반복 트리거가 작업으로 전환되는 방식을 제어합니다
자동화에는 또 다른 동시성 정책 계층이 있습니다. 규칙은 두 번째 트리거를 거부하거나, 현재 실행을 다시 시작하거나, 작업을 대기열에 넣거나, 여러 실행을 병렬로 생성할 수 있습니다. 이러한 선택은 정확성과 리소스 요구량을 모두 바꿉니다.
Home Assistant의 현재 자동화 모드 문서는 single, restart, queued, parallel 모드와 대기 중이거나 병렬로 실행되는 작업 수의 최대값을 설정하는 기능을 정의합니다. queued 및 parallel 모드의 기본 최대값은 10이지만, 이 설정값은 플랫폼 전체의 처리 용량을 나타내는 수치가 아닙니다.
2초 동안 기다린 뒤 알림을 보내는 도어 센서 자동화와 네트워크 호출 5회를 수행하는 조명 자동화는 같은 작업이 아닙니다. 자동화 모드는 먼저 실행 순서와 정확성을 기준으로 설정한 다음, 그 결과로 발생하는 대기열이나 중첩 실행이 제어 지연에 영향을 주는지 관찰해야 합니다.
CPU 사용률만 보지 말고 대기열 증가와 최악 지연 시간을 측정하세요
중요한 로컬 자동화 하나를 지연 시간 측정 기준으로 사용하세요. 동시성 변수는 반복 트리거, 대시보드 클라이언트, 백그라운드 통합 또는 인접 서비스 중 한 번에 하나만 늘리면서 트리거 도착, 자동화 시작, 서비스 호출, 실제 기기 응답 시간을 기록합니다.
이벤트 기반 작업과 유휴 서버 부하에 관한 ZimaSpace 글은 적절한 기준을 제시합니다. 이벤트 기반 시스템은 필요할 때만 작업을 깨우므로 효율적이지만, 버스트가 발생해도 대기열이 지속적으로 쌓이지 않고 처리되려면 충분한 스케줄링 여유와 리소스 여유가 필요합니다.
중앙값 지연 시간과 정상 실행 중 가장 느린 실행을 확인하세요. 시스템 평균 CPU 사용률이 10%에 불과해도 짧은 버스트로 1초 지연이 발생할 수 있습니다. 대기열이 계속 증가하거나, 최대 실행 수 경고가 반복적으로 나타나거나, 버스트가 끝난 뒤에도 최악 지연 시간이 기준선으로 돌아오지 않을 때 유용한 처리 용량의 경계가 드러납니다.
Home Assistant 동시성과 호스트 리소스 경쟁을 분리하세요
다른 컨테이너가 CPU, 메모리, 스토리지 또는 네트워크를 포화시키는 동안에도 Home Assistant 자체는 정상적으로 작업을 예약하고 있을 수 있습니다. 이 경우 공유 호스트의 리소스 여유가 이미 사라졌기 때문에 자동화 max 값을 늘리거나 줄여도 문제가 달라지지 않을 수 있습니다.
인접한 작업을 일시 중지한 상태에서 동시성 테스트를 다시 수행하세요. 이벤트 루프 타이밍과 로컬 제어 지연이 즉시 회복된다면 한계를 공유 호스트의 처리 용량 문제로 판단하세요. 회복되지 않는다면 Home Assistant 내부의 차단 작업, 통합 동작 또는 자동화 대기열 설계를 점검해야 합니다.
작업 수를 발표하는 대신 중단 조건을 사용하세요
| 관찰된 신호 | 의미 | 다음 테스트 |
|---|---|---|
| 병렬/대기 실행이 설정된 최대값에 도달함 | 자동화 수준의 대기열 한계 | 모드, 실행 순서, 트리거 빈도 확인 |
| 이벤트 루프 경고 또는 광범위한 UI/제어 지연 | 차단 작업 가능성 | 통합 또는 동기 호출 식별 |
| 다른 서비스가 활성화된 경우에만 지연 시간이 증가함 | 공유 호스트 리소스 경쟁 | CPU, 메모리, I/O, 네트워크 압박 측정 |
| 다른 장치 경로는 빠른데 한 장치 경로만 느림 | 의존성별 한계 | 해당 통합/네트워크 경로 점검 |
| 대기열이 비워지고 최악 지연 시간이 목표 범위에 유지됨 | 유용한 동시성 여유가 남아 있음 | 계획한 최대 부하에서 부하 추가 중단 |
따라서 Home Assistant의 처리 용량은 동시 작업의 보편적인 개수가 아니라, 지연 시간 목표를 포함한 테스트된 작업 부하로 제시해야 합니다. 핵심은 현재 사용 중인 통합 구성과 호스트가 중요한 로컬 제어 경로의 기한을 충족하지 못하기 전에 얼마나 많은 중첩 작업을 감당할 수 있는지입니다.
기술 및 AI 허브
더 읽어보기

홈 어시스턴트의 런타임 상태와 영구 상태: 재시작 후에도 무엇이 유지되어야 할까요?
Home Assistant는 모든 실시간 값을 영구 저장하지 않습니다. 구성, 레지스트리, 선택적으로 복원되는 상태, 기록, 배포 데이터는 재시작 시 서로 다른 역할을 합니다.

Home Assistant는 로컬 및 원격 세션을 어떻게 인증하나요?
로컬 및 원격 Home Assistant 세션은 동일한 서버 측 ID 모델을 사용합니다. 원격 액세스는 경로와 TLS 경계를 변경할 뿐, 핵심 토큰 흐름은 변경하지 않습니다.

Recorder 데이터가 늘어날수록 Home Assistant 기록 쿼리가 느려지는 이유는 무엇인가요?
요청한 범위가 더 많은 행에 걸쳐 있거나 캐시 미스가 증가하거나 스토리지 및 인덱스 작업이 느려지면 레코더의 증가로 인해 기록 조회 비용이 상승할 수 있습니다.

