CI/CD 설정을 해놔서 ec2 에서 알아서 pull 하고 build, start까지 실행돼야 하는데, 그게 잘 안되는것 같았다.
그것도 모르고 '왜 로직을 추가했는데 안되는거야...' 하며 몇시간을 날림ㅎ..
build를 수동으로 하면 이런 에러가 뜬다.
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
뭔가 메모리가 부족하다는것 같았는데, 찾아보니 빌드 과정에서 사용하는 메모리의 양이 시스템의 한계를 초과해서 나타난 에러라고 한다.
기본적으로 node.js는 약 1.5GB의 메모리를 사용하도록 설정되어있는데, 위와 같이 메모리가 부족하면 한도를 늘리는 것도 가능하다.
다음 명령어로 한도를 4GB로 늘린다.
export NODE_OPTIONS="--max-old-space-size=4096"
npm run build
근데 이건 일회성이고, CI/CD 마다 할려면 package.json scripts의 build 명령어를 다음처럼 수정해줘야 한다.
"scripts": {
"build": "node --max_old_space_size=4096 node_modules/.bin/nest build"
}
'TIL' 카테고리의 다른 글
TIL 240814 - Artillery 를 이용한 부하테스트 (0) | 2024.08.14 |
---|---|
TIL 240813 - node media server에서 hls 변환 시 화질 fission 방법 (0) | 2024.08.14 |
TIL 240807 - node-media-server 트러블슈팅 (1) (0) | 2024.08.07 |
TIL 240805 - 로컬에서 https 테스트하기 + 인증서 발급 (0) | 2024.08.05 |
TIL 240802 - unsigned 속성 / foreign key 에러 (0) | 2024.08.02 |