피드로 돌아가기
Node.js BlogBackend
원문 읽기
Node.js 12.18.2 LTS가 V8 엔진 백포트와 AsyncWrap 심볼 저장소 변경으로 메모리 누수 2건 해결
Node.js 12.18.2 (LTS)
AI 요약
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 관련 누수를 제거할 수 있다.