[TIL] heap out of memory 에러 (1/2) 23.09.07

이상훈·2023년 9월 7일
0

[내일배움캠프]

목록 보기
67/68

EC2에서 npm run build를 하던 도중 heap out of memory에러가 발생

const used = process.memoryUsage();
console.log(`메모리 사용량: ${Math.round(used.rss / 1024 / 1024)}MB`);

main.ts에 해당 코드를 작성 후 사용 메모리를 봤는데 123mb로 512mb보다 한참 떨어지는데 왜 저런 오류가 날까 해서 구글링 해보니 일단 build하는 과정 중에 node.js에서 사용할 수 있는 메모리양을 넘어서 그렇다는 이유, 또 t2.micro는 사용할 수 있는 기본 용량이 1gb라 swap메모리를 사용해야 한다 하여 둘 다 적용하였음

$ node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))'
-> 499.25

500mb를 2048mb로 늘려주고

$ export NODE_OPTIONS=--max_old_space_size=2048
dd if=/dev/zero of=/swap-file bs=1k count=2048000

swapfile을 생성해주고
dd : 크기를 가진 파일을 만드는 명령
if : 초기화할 때 사용하는 장치 파일명
of : 생성할 파일명
bs : 블록크기 지정 (단위없을 경우 : 바이트 처리)
count : bs에 설정한 블록의 개수
-> 위 명령어대로라면, 현재위치에 swap-file이라는 이름의 2GB를 가진 파일이 하나 만들어진다.

읽기쓰기 권한 설정을 해줌

sudo chmod 600 /swapfile

swap-file을 저장할 공간을 생성해주고

sudo mkswap /swapfile
// vi에디터를 열어 줌
sudo vi /etc/fstab
// 파일의 맨 끝 다음줄에 아래의 명령어를 작성하여 ec2 서버가 꺼져도 활성화 될 수 있도록 함
/swapfile swap swap defaults 0 0

ubuntu에서 정상적으로 build가 되고 있으나 git action에서 같은 오류가 발생하였음

name : Build and Deploy to EC2

on:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]

jobs:
  AUTO_DEPLOY:
    runs-on: ubuntu-latest
    
    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '16'

      - name: Run scripts in server
        uses: appleboy/ssh-action@master
        with:
          host: ${{secrets.HOST }}
          username: ${{secrets.USERNAME }}
          password: ${{secrets.PASSWORD }}
          port: ${{secrets.PORT }}
          timeout: 40s
          script: ${{secrets.SCRIPT }}
profile
코린이

0개의 댓글