메모리 관련 오류#
n8n은 각 노드가 가져오고 처리할 수 있는 데이터 양을 제한하지 않습니다. 이는 자유를 주지만 워크플로우 실행에 사용 가능한 것보다 더 많은 메모리가 필요할 때 오류가 발생할 수 있습니다. 이 페이지에서는 이러한 오류를 식별하고 방지하는 방법을 설명합니다.
자체 호스팅 n8n에만 해당
이 페이지에서는 자체 호스팅 n8n 시 메모리 관련 오류에 대해 설명합니다. n8n 클라우드의 메모리 제한에 대해 알아보려면 클라우드 데이터 관리를 방문하십시오.
메모리 부족 상황 식별#
n8n은 일부 메모리 부족 상황에서 경고하는 오류 메시지를 제공합니다. 예를 들어 이 노드에서 실행이 중지되었습니다(n8n이 실행하는 동안 메모리가 부족했을 수 있음)와 같은 메시지입니다.
워크플로우 실행 문제, 연결 끊김 또는 503 서비스를 일시적으로 사용할 수 없음을 포함한 오류 메시지는 n8n 인스턴스를 사용할 수 없게 되었음을 나타냅니다.
자체 호스팅 n8n을 사용하는 경우 서버 로그에 할당 실패 - JavaScript 힙 메모리 부족과 같은 오류 메시지가 표시될 수도 있습니다.
n8n 클라우드 또는 n8n의 Docker 이미지를 사용하는 경우 이러한 문제가 발생하면 n8n이 자동으로 다시 시작됩니다. 그러나 npm으로 n8n을 실행하는 경우 수동으로 다시 시작해야 할 수 있습니다.
일반적인 원인#
이러한 문제는 워크플로우 실행에 n8n 인스턴스에서 사용 가능한 것보다 더 많은 메모리가 필요할 때 발생합니다. 워크플로우 실행의 메모리 사용량을 증가시키는 요인은 다음과 같습니다.
- JSON 데이터의 양.
- 바이너리 데이터의 크기.
- 워크플로우의 노드 수.
- 일부 노드는 메모리를 많이 사용합니다. 코드 노드와 이전 함수 노드는 메모리 소비를 크게 증가시킬 수 있습니다.
- 수동 또는 자동 워크플로우 실행: n8n이 프런트엔드용 데이터 복사본을 만들기 때문에 수동 실행은 메모리 소비를 증가시킵니다.
- 동시에 실행되는 추가 워크플로우.
메모리 부족 상황 방지#
메모리 부족 상황이 발생하면 n8n에서 사용 가능한 메모리 양을 늘리거나 메모리 소비를 줄이는 두 가지 옵션이 있습니다.
사용 가능한 메모리 늘리기#
자체 호스팅 n8n을 사용하는 경우 n8n에서 사용 가능한 메모리 양을 늘리는 것은 n8n 인스턴스에 더 많은 메모리를 프로비저닝하는 것을 의미합니다. 이로 인해 호스팅 공급자와 추가 비용이 발생할 수 있습니다.
n8n 클라우드에서는 더 큰 플랜으로 업그레이드해야 합니다.
메모리 소비 줄이기#
이 접근 방식은 더 복잡하며 문제를 일으키는 워크플로우를 다시 빌드해야 함을 의미합니다. 이 섹션에서는 메모리 소비를 줄이는 방법에 대한 몇 가지 지침을 제공합니다. 모든 제안이 모든 워크플로우에 적용되는 것은 아닙니다.
- Split the data processed into smaller chunks. For example, instead of fetching 10,000 rows with each execution, process 200 rows with each execution.
- Avoid using the Code node where possible.
- Avoid manual executions when processing larger amounts of data.
- Split the workflow up into sub-workflows and ensure each sub-workflow returns a limited amount of data to its parent workflow.
Splitting the workflow might seem counter-intuitive at first as it usually requires adding at least two more nodes: the Loop Over Items node to split up the items into smaller batches and the Execute Workflow node to start the sub-workflow.
However, as long as your sub-workflow does the heavy lifting for each batch and then returns only a small result set to the main workflow, this reduces memory consumption. This is because the sub-workflow only holds the data for the current batch in memory, after which the memory is free again.
이전 메모리 늘리기#
이는 자체 호스팅 n8n에 적용됩니다. JavaScript 힙 메모리 부족 오류가 발생하는 경우 V8 JavaScript 엔진의 이전 메모리 섹션에 추가 메모리를 할당하는 것이 종종 유용합니다. 이렇게 하려면 CLI를 통해 또는 NODE_OPTIONS
환경 변수를 통해 적절한 V8 옵션 --max-old-space-size=SIZE
를 설정하십시오.