spring boot를 설치하고 ./gradlew clean build 코드로 빌드가 되지 않았다. compilejava에서 멈추는 현상이 발생했다.

나는 ec2를 사용해 서버를 구축했기 때문에 우선 ec2 인스턴스 중지 후 다시 가동시켜주었다. 이후 여러 방법을 시도해 보았고 해결이 됐던 방법을 아래에 적는다.

 

해결책은 바로 스왑이다. swap이란 메모리 즉, RAM이 부족할 때, 남는 HDD를 RAM으로 사용하는 것이다.ec2 프리티어의 경우 주어진 메모리의 양이 적어 빌드시나 다른 작업을 할 때 자주 에러가 난다. 이때마다 ec2를 재가동 시켜주어야 하고 작업 수행도 되지 않으니 스왑을 해주어야한다.스왑하는 방법은 공식 사이트에도 잘 나와있다.https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/

 

스왑 파일을 사용하여 Amazon EC2 인스턴스의 스왑 공간으로 메모리 할당

1.    dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성합니다. 명령에서 bs는 블록 크기이고 count는 블록 수입니다. 스왑 파일의 크기는 dd 명령의 블록 크기 옵션에 블록 수 옵션을 곱

aws.amazon.com

주의 사항은 스왑 공간은 절대로 32MB 미만이 되지 않아야 한다.

sudo dd if=/dev/zero of=/swapfile bs=128M count=16
 위와 같이 설정할 경우 스왑 공간은 128MB x 16 = 2GB가 된다.

sudo chmod 600 /swapfile
 스왑 파일의 읽기 및 쓰기 권한 업데이트

sudo mkswap /swapfile
 Linux 스왑 영역 설정

sudo swapon /swapfile
 스왑 공간에 스왑 파일을 추가하여 스왑 파일 즉시 사용 가능
 
sudo swapon -s
 프로시저가 성공적인지 확인
 
sudo vi /etc/fstab
 /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 시작하도록 한다.

 

스왑 파일은 아래와 같이 마지막에 /swapfile swap swap defaults 0 0 코드를 추가해준다.

 

이로써 스왑 설정이 마무리됐다.

 

sudo ./gradlew clean build 를 실행해 빌드를 시도해보면 잘되는 것을 확인할 수 있다.

 

반응형

'Server' 카테고리의 다른 글

[POSTMAN] - POST 요청 시 GET 방식으로 인식 오류  (0) 2022.09.02
[Nginx] proxy pass 설정  (0) 2022.09.01

+ Recent posts