본문으로 건너뛰기

트러블슈팅 — 플로우에서 자주 빠지는 함정

증상원인 / 해결
Deploy 후에도 변화 없음노드의 빨간 점 잔류 = 저장 안 됨. 다시 Deploy. 또는 캐시된 inject 결과를 보고 있음 — 새 inject 트리거 클릭
태그값 읽기가 항상 null태그 ID 오타 / 그 태그가 게이트웨이에 등록 안 됨 / OPC 연결 끊김. 자주 하는 작업 → 실시간 값 보기 에서 먼저 확인
너무 빠른 inject 로 게이트웨이 부하1초 미만 폴링은 권장 안 함. 정말 빠른 갱신이 필요하면 Sparkplug 또는 MQTT 직접 구독 을 검토
Fresh 옵션 켜둔 채 다수 태그 동시 폴링PLC 동시 read 폭주. 평소엔 캐시(default) 로 충분. 진단할 때만 fresh
Node-RED 가 갑자기 멈춤무한 루프(노드 출력 → 같은 노드 입력) 의심. Catch 노드를 두면 디버깅 쉬움
외부 인터넷 호출 실패게이트웨이 방화벽 / DNS 점검. 사내망 환경이면 프록시 설정 필요
“Maximum call stack size exceeded”function 노드의 무한 재귀. return msg 가 자기 자신을 다시 트리거하는 구조 점검
Deploy 후 플로우가 전부 사라짐/data1/pp-data/node-red/flows.json 손상. 백업에서 복원 필요. node/bin/start.sh 가 master conf 와 자동 sync 하지만 한 번 손상이 디스크에 굳으면 복구 필요
MQTT 메시지 한 번도 안 옴토픽 와일드카드(#/+) 오타. MQTT Explorer 같은 별도 툴로 토픽 트리 확인
OPC-UA BadIdentityTokenInvalid사용자/비밀번호 또는 인증서 미신뢰. 서버 콘솔에서 클라이언트 인증서 Trust 처리
OPC-UA BadTypeMismatchOpcUa-Item 의 DataType 이 실제 노드 타입과 다름

디버깅 팁

  1. debug 노드를 전체 msg 객체 설정해서 어떤 필드가 흐르고 있는지 확인.
  2. Catch 노드를 한쪽에 두고 모든 에러를 잡아 debug 로 보내기 — 어느 노드에서 죽었는지 즉시 파악.
  3. Status 노드 로 mqtt/opcua 노드의 연결됨 / 끊김 변화를 잡으면 외부 통신 문제 진단 쉬움.
  4. inject 의 Inject once after deploy 로 “Deploy 시 한 번 실행” 을 만들고, 결과를 debug 로 확인.
  5. function 안의 node.warn(...) 또는 node.error(...) 로 자유롭게 사이드바에 출력.

다음 단계