[Spring Boot] EC2 배포 시 빌드 오래 걸리는 문제 해결

xyzw·2023년 5월 18일
1

Spring

목록 보기
8/22
  • gradle 프로젝트
  • 빌드 안 됨 / 빌드 오래 걸림
  • 무한 로딩

배포 순서

gradle을 이용한 spring boot 프로젝트를 EC2에 배포하는 순서는 다음과 같다.

  1. 프로젝트를 깃허브에 업로드
  2. EC2에서 깃허브 레포지토리를 클론
  3. 프로젝트 폴더 아래 gradlew 파일에 실행권한 부여 chmod 777 ./gradlew
  4. 깃허브에는 yml 파일이 올라가있지 않으므로 yml 파일 직접 작성
  5. 빌드 실행 ./gradlew build
  6. 빌드 완료 후 jar 파일 실행


문제

4단계에서 ./gradlew build 입력 후 20분이 지나도 :compileJava 로딩이 끝나지 않는다.

➡️ EC2 프리티어에서 사용 가능한 t2.micro의 RAM이 1GB밖에 되지 않아서 빌드가 완료되지 않는 것 같다.


해결

  1. swap 메모리 사용
    사용법은 메모리 부족 현상 해결 방법 글을 참고하였다.

  1. src/main/resources/application.yml 파일 작성
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://{RDS 인스턴스 엔드포인트}:3306/{DB 이름}?createDatabaseIfNotExist=true&characterEncoding=UTF-8&characterSetResults=UTF-8
    username: {마스터 사용자 이름}
    password: {마스터 암호}
  jpa:
    hibernate:
      ddl-auto: update
    generate-ddl: true
    show-sql: true

  1. 프로젝트 디렉토리에서
    sudo chmod 777 ./gradlew
    ./gradlew build

  1. 빌드 완료 후 /build/libs 디렉토리의 ~SNAPSHOT.jar 파일 실행
    nohup java -jar {파일명}.jar &
  • nohup: 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작 할 수 있게 해주는 명령어
  • &: jar 파일을 백그라운드로 실행
  • 로그를 보고 싶다면 cat nohup.out 입력


백그라운드 실행 종료 방법

배포를 중단하는 방법

  • ps -ef를 입력한 후, jar 파일을 실행 중인 프로세스의 pid를 확인하고
    kill -9 {pid}로 해당 프로세스를 강제종료한다.

  • jobs를 입력하여 jar 파일을 실행 중인 작업의 인덱스를 확인하고
    fg %{인덱스}로 작업을 포그라운드로 가져온 후 ctrl+c로 종료한다.

1개의 댓글

comment-user-thumbnail
2023년 5월 23일

글이 너무 도움이 되었습니다 정말 감사합니다 ^^..

답글 달기