Java

젠킨스 JVM 메모리 설정

dev_roach 2021. 10. 20. 18:33
728x90

프로젝트를 AWS 에 올리게 되면서 Jenkins 메모리 부족관련 이슈를 겪었습니다.

 

AWS 프리티어를 이용하다보니, 메모리 부족 관련 이슈가 계속해서 발생했습니다. 

요금제 때문에 더 높은 인스턴스를 이용할 수 없었고, 결과적으로 메모리를 늘려주기 위해 SWAP 메모리를 사용해야만 했습니다.

SWAP 메모리?

간단하게 SWAP 메모리는 우리의 물리 하드디스크를 메모리 처럼 이용해줄 수 있게 만들어주는 것입니다.

쉽게 설명하면 하드디스크를 어느정도 메모리 처럼 사용할 수 있다는 것이죠

 

아마존 공식문서는 아래와 같습니다.

https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/

 

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

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

aws.amazon.com

1.  swapfile 을 잡아봅시다.

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

2. 이제 swap 영역에 읽기와 쓰기 설정을 해줍시다.

sudo chmod 600 /swapfile

3. Linux 의 Swap 영역을 설정해줍시다.

sudo mkswap /swapfile

4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 합니다.

sudo swapon /swapfile

5. 본과정이 제대로 진행되었는지 한번 확인해줍시다.

sudo swapon -s

6. 편집기를 열어 아래파일을 엽니다.

sudo vi /etc/fstab

7. 아래의 명령어를 끝줄에 추가합니다.

/swapfile swap swap defaults 0 0

8. 이제 free 를 입력하여 확인해봅시다.

Swap 메모리를 설정완료했습니다!

 

이제는 jenkins 의 JVM Memory 를 늘려줘야 할 일이 생겼는데요.

Jenkins Config 파일을 찾는 법은 아래와 같습니다.

 

vi /etc/default/jenkins

 

이제 찾았다면 메뉴에서 JVM 메모리 용량을 자신이 원하는 대로 적어줍시다.

 

이제 적용했으니 Jenkins 를 한번 껐다가 켜보도록 하죠

sudo systemctl restart jenkins

 

이제 아래와 같이 정상적으로 젠킨스를 통한 배포가 성공했네요. EC2 메모리가 부족하다면 SWAP 메모리를 적극 이용해보시길 바랍니다.