피드로 돌아가기
Node.js 12.18.2 (LTS)
Node.js BlogNode.js Blog
Backend

Node.js 12.18.2 LTS가 V8 엔진 백포트와 AsyncWrap 심볼 저장소 변경으로 메모리 누수 2건 해결

Node.js 12.18.2 (LTS)

2020년 6월 30일3intermediate

Context

Node.js 런타임에서 PrototypeUsers::Add 함수와 AsyncWrap 리소스 저장 메커니즘으로 인한 메모리 누수가 보고되었다.

Technical Solution

  • V8 엔진 커밋 fb26d0bb1835를 Node.js 12 LTS 브랜치에 백포트: PrototypeUsers::Add 메모리 누수 해결
  • AsyncWrap 리소스 저장 방식을 심볼(Symbol) 기반으로 변경: 기존 직접 참조 방식에서 심볼을 통한 간접 참조로 전환
  • Windows, macOS, Linux, AIX, SmartOS, ARMv7/v8 등 11개 플랫폼 바이너리 배포

Key Takeaway

LTS 버전에서의 메모리 누수는 상위 버전의 업스트림 커밋을 백포트하거나 데이터 구조 저장 메커니즘을 개선하여 해결할 수 있으며, 이는 장기 지원 브랜치의 안정성 유지에 필수적이다.


Node.js 12 LTS를 사용하는 서비스에서 장기 실행 프로세스의 메모리 누수를 경험한다면

1

2.

1

8.2 이상으로 업그레이드하여 PrototypeUsers 및 AsyncWrap 관련 누수를 제거할 수 있다.

원문 읽기