스케줄러 환경 변수
n8n v2.34요약
이 환경 변수는 각 인스턴스의 메모리 대신 데이터베이스 기반 큐에서 시간 기반 워크플로를 실행하는 durable scheduler를 구성합니다. durable scheduler는 환경 플래그 뒤에 있는 프리뷰 기능입니다.
이 환경 변수는 각 인스턴스의 메모리 대신 데이터베이스 기반 큐에서 시간 기반 워크플로를 실행하는 durable scheduler를 구성합니다. durable scheduler가 무엇을 변경하는지, 켜는 방법, 작동 방식에 대해서는 Durable scheduler를 참고하세요.
프리뷰 기능
durable scheduler는 환경 플래그 뒤에 있는 프리뷰 기능입니다. 이 기능이 일반 출시(GA)에 도달하기 전까지 환경 변수와 기본 동작이 변경될 수 있습니다.
스케줄러 활성화#
| 변수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
N8N_SCHEDULER_ENABLED |
Boolean | false |
durable scheduler를 켤지 여부입니다. 켜면 스케줄러가 예정된 실행을 실행하기 전에 데이터베이스에 저장하므로, 재시작해도 실행이 유실되지 않고 여러 인스턴스에서 각 실행이 정확히 한 번씩 실행됩니다. Schedule Trigger 노드를 인계받으려면 N8N_USE_WORKFLOW_PUBLICATION_SERVICE가 필요합니다. |
구체화(Materialization)#
스케줄러가 다가오는 실행을 데이터베이스에 얼마나 미리, 얼마나 자주 기록하는지를 제어합니다.
| 변수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
N8N_SCHEDULER_MATERIALIZATION_WINDOW |
Number | 60 |
스케줄러가 다가오는 실행을 몇 초 앞서 기록할지를 지정합니다. 값이 클수록 실행을 더 미리 커밋합니다(다운타임에 더 강하지만 스토리지 사용량이 다소 늘어남). 0보다 커야 합니다. |
N8N_SCHEDULER_MATERIALIZATION_INTERVAL |
Number | 10 |
스케줄러가 활성 스케줄을 스캔하여 윈도우 내의 실행을 기록하는 주기(초)입니다. 0보다 커야 합니다. |
N8N_SCHEDULER_MATERIALIZATION_TIMEOUT |
Number | 60 |
단일 스캔이 중단되고 다음 주기에 재시도되기까지 실행될 수 있는 최대 시간(초)입니다. 느린 데이터베이스로 인해 스캔이 멈추는 상황을 방지합니다. 0보다 커야 합니다. |
실행(Execution)#
스케줄러가 예정된 실행을 얼마나 자주 시작하는지, 그리고 하나의 인스턴스만 실행하도록 각 실행을 어떻게 확보(claim)하는지를 제어합니다.
| 변수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
N8N_SCHEDULER_EXECUTOR_INTERVAL |
Number | 5 |
스케줄러가 시간이 도래한 기록된 실행을 확인하고 시작하는 주기(초)입니다. 실행의 예정 시각과 실제 시작 시각 사이의 최악의 지연 시간을 결정합니다. 값을 낮추면 타이밍이 더 정확해지지만 폴링 빈도가 늘어납니다. 0보다 커야 합니다. |
N8N_SCHEDULER_EXECUTOR_TIMEOUT |
Number | 60 |
예정된 실행을 확인하는 단일 작업이 중단되고 다음 주기에 재시도되기까지 실행될 수 있는 최대 시간(초)입니다. 0보다 커야 합니다. |
N8N_SCHEDULER_LEASE_DURATION |
Number | 60 |
한 인스턴스가 가져온 실행에 대한 독점 확보(claim) 권한을 유지하는 시간(초)으로, 다른 인스턴스가 동일한 실행을 시작하지 못하게 합니다. 인스턴스가 완료 전에 중단되면 이 시간이 지난 후 확보 권한이 만료되어 다른 인스턴스가 인계받을 수 있습니다. 실행이 시작되는 데 걸리는 시간보다 충분히 길게 설정하세요. 너무 짧으면 중복 실행 위험이 있고, 너무 길면 크래시 이후 복구가 지연됩니다. 0보다 커야 합니다. |
N8N_SCHEDULER_CLAIM_BATCH_SIZE |
Number | 100 |
한 번의 확보(claim) 작업에서 큐로부터 가져오는 최대 실행 수입니다. 배치가 클수록 백로그를 더 빨리 해소하지만, 한 인스턴스가 한 번에 더 많은 작업을 보유하게 됩니다. 0보다 커야 합니다. |
복구(Recovery)#
인스턴스가 확보했지만 완료하지 못한 실행을 다른 인스턴스가 인계받을 수 있도록 해제하는 reaper를 제어합니다.
| 변수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
N8N_SCHEDULER_REAPER_INTERVAL |
Number | 30 |
스케줄러가 인스턴스가 확보했지만 완료하지 못한 실행(예: 크래시나 종료 이후)을 찾아 다시 사용 가능하게 만드는 주기(초)입니다. 0보다 커야 합니다. |
N8N_SCHEDULER_REAPER_BATCH_SIZE |
Number | 100 |
한 번의 reaper 작업에서 회수하는 만료된 확보(claim)의 최대 개수입니다. 배치가 클수록 백로그를 더 빨리 복구하지만, 한 인스턴스가 한 번에 더 많은 작업을 보유하게 됩니다. 0보다 커야 합니다. |
N8N_SCHEDULER_REAPER_TIMEOUT |
Number | 60 |
단일 복구 작업이 중단되고 다음 주기에 재시도되기까지 실행될 수 있는 최대 시간(초)입니다. 0보다 커야 합니다. |
N8N_SCHEDULER_MAX_ATTEMPTS |
Number | 5 |
n8n이 예정된 실행을 포기하고 데드레터 처리하기 전까지, 해당 실행을 다시 확보(예: 크래시 이후)하거나 오류 발생 시 재시도할 수 있는 최대 횟수입니다. 인스턴스 재시작이나 일시적 오류가 자주 발생하는 인프라에서는 값을 높이고, 더 빨리 포기하고 넘어가려면 값을 낮추세요. 0보다 커야 합니다. |
보존(Retention)#
스케줄러가 완료된 실행을 이력으로 얼마나 오래 보관하는지, 그리고 오래된 실행을 얼마나 자주 삭제하는지를 제어합니다. n8n은 문제를 파악하고 디버깅할 시간을 확보할 수 있도록, 실패하거나 놓친 실행을 정상 완료된 실행보다 더 오래 보관합니다.
| 변수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
N8N_SCHEDULER_RETENTION |
Number | 86400 |
스케줄러가 정상적으로 완료된 실행(성공 또는 취소)을 삭제하기 전까지 보관하는 시간(초)입니다. 기본값은 하루입니다. 값을 높이면 더 많은 이력을 보관하고, 낮추면 데이터베이스 공간을 더 빨리 회수합니다. 0보다 커야 합니다. |
N8N_SCHEDULER_FAILED_RETENTION |
Number | 604800 |
스케줄러가 잘못된 실행(실패 또는 놓친 실행)을 삭제하기 전까지 보관하는 시간(초)입니다. 기본값은 7일입니다. 디버깅할 시간을 확보할 수 있도록 N8N_SCHEDULER_RETENTION보다 길게 설정하세요. 더 낮게 설정하면 스케줄러가 경고를 표시합니다. 0보다 커야 합니다. |
N8N_SCHEDULER_RETENTION_INTERVAL |
Number | 3600 |
스케줄러가 보관 기간이 지난 완료된 실행을 삭제하는 주기(초)입니다. 기본값은 1시간입니다. 0보다 커야 합니다. |
N8N_SCHEDULER_RETENTION_TIMEOUT |
Number | 300 |
단일 정리 작업이 중단되고 다음 주기에 재시도되기까지 실행될 수 있는 최대 시간(초)입니다. 기본값은 5분입니다. 0보다 커야 합니다. |
인스턴스 간 조정#
스케줄러가 백그라운드 작업을 어떻게 중첩시키고 인스턴스 간에 데이터베이스 부하를 분산하는지를 제어합니다.
| 변수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
N8N_SCHEDULER_MAX_CONCURRENT_PASSES |
Number | 10 |
데이터베이스가 중첩 작업을 지원하는 경우(PostgreSQL), 한 인스턴스에서 동시에 실행할 수 있는 동일 종류의 백그라운드 작업 최대 개수입니다. 한도가 이미 사용 중일 때 작업이 도래하면 n8n은 이를 건너뜁니다. SQLite에서는 작업이 절대 중첩되지 않으므로 이 설정은 영향을 주지 않습니다. 0보다 커야 합니다. |
N8N_SCHEDULER_JITTER_RATIO |
Number | 0.1 |
각 주기 작업의 타이밍에 추가되는, 간격 대비 비율로 표현되는 작은 무작위 변동값입니다. 0.1로 설정하면 10초마다 실행되도록 설정된 작업이 실제로는 9~11초마다 실행됩니다. 이는 롤링 배포처럼 동시에 시작된 인스턴스들의 데이터베이스 쿼리를 분산시킵니다. 정확한 간격을 원하면 0으로 설정하고, 부하를 더 고르게 분산하려면 값을 높이세요. 0 이상 1 미만이어야 합니다. |
스케줄 동작#
| 변수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
N8N_SCHEDULER_MIN_INTERVAL |
Number | 0 |
동일한 스케줄의 연속된 실행 사이에 허용되는 최소 간격(초)입니다. n8n은 이보다 더 자주 실행되도록 설정된 스케줄을 이 간격까지 늦춥니다. 기본값은 0이며, 이 경우 제한이 비활성화되어 각 스케줄에 지정된 간격이 그대로 적용됩니다. 폭주하는 매초 실행 스케줄이 인스턴스에 과부하를 주지 않도록 제한하려면 이 값을 설정하세요. |
N8N_SCHEDULER_TRIGGER_NODE_MODE |
Enum(legacy, new) |
legacy |
Schedule Trigger 노드의 "매 N초"와 "매 N분" 스케줄이 실행되는 방식을 지정합니다. legacy는 인메모리 스케줄러와 동일한 시계 정렬(clock-aligned) 타이밍을 유지하며, new는 활성화 시점부터 일정한 N초 간격으로 실행을 배치합니다. 초 단위와 분 단위 간격에만 영향을 줍니다. Schedule Trigger 타이밍을 참고하세요. |