«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Recent Posts
Today
Total
관리 메뉴

on&on

[에러일지] EC2 배포 시, react build 안되는 이유(Swap 메모리 할당하여 해결하기) 본문

에러일지

[에러일지] EC2 배포 시, react build 안되는 이유(Swap 메모리 할당하여 해결하기)

다느 2023. 6. 10. 09:54
 

[React] AWS EC2에 React 무중단 배포하기

목차 AWS EC2(Elastic Compute Cloud)란? EC2 인스턴스 생성하기 EC2로 React 프로젝트 배포하기 AWS EC2(Elastic Compute Cloud)란? EC2는 AWS에서 제공하는 클라우드 컴퓨팅 서비스이다. 클라우드 컴퓨팅은 인터넷(클

ekdms5566.tistory.com

 

만약 EC2에서 배포를 하기 위해 npm run build를 한 지 몇 분이 지나도 빌드가 되지 않는다면...?


나는 Creating an optimized production build... 이 문구만 십 몇분을 보고만 있었던...

 

그렇다면 왜 빌드가 안되는 것인가... 그 이유인 즉슨 빌드 규모 대비 램 크기가 작아서 그랬던 것이다... 램 크기가 2기가인 인스턴스 유형으로 사용할 때는 잘되던 빌드가 램 크기가 1기가인 인스턴스로 변경 하니까 안되는... 하지만 인스턴스를 변경하지 않아도 해결할 수 있다!

Swap 메모리 활용하기

부족한 메모리를 임시로 Swap 메모리를 설정하게 되면 EC2의 메모리가 부족하더라도 Swap 메모리로 잠시 대체할 수 있다.

Swap 메모리란?

  • 실제 메모리 램이 가득 찼지만 더 많은 메모리가 필요할 때 디스크 공간을 이용하여 부족한 메모리를 대체할 수 있는 공간을 의미한다. 실제 디스크 공간을 메모리처럼 사용하는 개념이기 때문에 가상 메모리라고 생각할 수 있다.

 

우분투 환경에서 free -h명령어를 통해 현재 swap 메모리를 확인할 수 있다.

 

 

total은 전체 설치된 메모리, used는 사용 중인 메모리, free는 사용 가능한 메모리를 의미하며, available은 swap 메모리의 사용 없이 새로운 프로세스에서 할당 가능한 메모리의 예상 크기를 의미한다.

 

또한, 현재 두 번째 줄을 보면 현재 할당된 Swap 메모리는 0인 것을 볼 수 있다. 몇 가지 명령어를 통해 Swap 메모리를 할당하여 빌드를 해보자!

# Swap 메모리 추가

sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048

먼저 Swap 메모리를 설정해야 한다. bs는 포맷의 단위로 뒤에 단위를 붙이지 않고 1024로 설정할 경우 1KB로 설정되며 1M으로 설정할 경우 MB 단위로 설정된다. 또한 count는 횟수를 의미한다. 위 코드는 1MB만큼 2048번 포맷을 하여 약 2기가 정도의 공간을 Swap 메모리를 추가한 것이다.

# Swap 메모리를 Swap 파일로 포멧
sudo mkswap /mnt/swapfile

# Swap 메모리 활성화
sudo swapon /mnt/swapfile

각각의 명령어를 실행하고 free -h 명령어로 확인해보면 아래와 같이 Swap 메모리가 할당된 것을 확인할 수 있다.

 

 

이제 가상 메모리 공간을 만들었으니 다시 npm run build 명령어를 실행하고 약 50초 정도 기다렸더니 build가 잘 되는 것을 확인할 수 있다.

# Swap 메모리 비활성화
sudo swapoff -v /mnt/swapfile

# Swap 메모리 삭제
sudo rm /mnt/swapfile

이제 swapoff 명령어를 사용하여 Swap 메모리를 비활성화하고 삭제해주면 된다! 이제 다시 배포를 해주면 끝이다!

Comments