AWS EC2 ./gradlew build시 멈춤 현상

버드뉴·2024년 2월 29일
0

프로젝트 협업

목록 보기
3/7

작업 환경
IDE: IntelliJ
Spring Boot: 3.2.3
Java: 20
EC2 Linux: Ubuntu


EC2에서 Spring 프로젝트를 Build 할 경우 어느 순간부터 진행률이 멈추고 가만히 있는 경우가 있습니다.

이는 EC2 인스턴스의 메모리 부족으로 인해 발생하는 문제인데, 프리티어를 사용하는 인스턴스에서 특히 자주 발생합니다.

EC2 - 모니터링CPU 사용율을 보면 gradlew을 build 했을 때 매우 높은 수치까지 상승하는 걸 볼 수 있습니다.

이 문제를 해결하기 위해선 Swap Memory 기능을 이용하여 RAM 부족 현상을 해결해야합니다.

Swap은 주 메모리를 보조해 시스템의 메모리 관리를 효율적으로 도와주는데, RAM이 가득 찼을 때 일부 데이터를 스왑 공간으로 옮겨 RAM을 정리해줍니다.


Swap Memory 설정

먼저 ./gradlewbuild 하다가 EC2가 멈췄다면 중지하고 다시 실행시켜줍시다.

그리고 터미널에 해당 명령어를 작성해줍니다.

sudo dd if=/dev/zero of=/swapfile bs=128M count=16

이 명령어는 dd 유틸리티를 사용하여 128MB 블록 크기로 총 16개의 블록을 가진 스왑 파일을 생성한다는 의미입니다.

128 x 16 = 2048 즉 2GB의 크기를 가지게 됩니다.

이제 Swap 파일의 권한을 설정해줘야 합니다.

sudo chmod 600 /swapfile

이제 스왑 공간을 설정해주어야 합니다.

sudo mkswap /swapfile

다음으로 스왑 활성화를 해줍시다.

sudo swapon /swapfile

마지막으로 재부팅 시 스왑이 유지되도록 /etc 폴더 내의 fstab 파일을 수정해야합니다.

cd /etc
sudo vi fstab

sudovi를 실행시켜 다음 줄을 추가시켜주면 됩니다.

/swapfile none swap sw 0 0

이제 인스턴스를 재시작 하더라도 자동으로 스왑 공간으로 마운트 하도록 설정합니다.


이제 정상적으로 ./gradlew build에 성공하는 걸 볼 수 있습니다!

profile
야생형 Backend 개발일지

0개의 댓글