Backend/프로젝트

나의 작고 소중한 프리티어 ec2.. 젠킨스를 버텨줘 (메모리 부족)

동구름이 2024. 5. 30. 17:32

문제 상황

프로젝트를 젠킨스를 통해 배포하려는데, 젠킨스에서 빌드를 시작하면 서버가 터져버리는 상황이 생겼습니다.

 우주로 향하는 CPU 사용률...

 

 

 ec2 프리티어의 기본 제공(t2.micro) 램 용량이 1GB 밖에 되질 않아, 젠킨스를 빌드하면 ssh도 접속하지 못하고 인스턴스를 재부팅해주어야했습니다.

 

 

해결 방법

 서버를 구입해야하나 고민하다가, AWS의 친절한 게시글이 있어 SWAP 메모리를 지정해 해결하는 방법을 찾아 해결했습니다.

 

스왑 파일을 사용하여 Amazon EC2 인스턴스에서 메모리를 스왑 스페이스로 할당합니다.

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 스왑 파일로 사용할 메모리를 할당하고 싶습니다. 어떻게 해야 하나요?

repost.aws

 

여기서 SWAP 메모리란, RAM 용량이 부족해지면 HDD의 공간을 RAM 처럼 사용하는 것입니다. (물론 HDD라 속도는 느림)

 

 

SWAP 메모리 권장 용량

 

스왑 메모리의 용량은 램이 1GB 이하라면 두 배 정도가 권장된다고 합니다. ec2 프리티어는 1GB이기 때문에, 2GB를 목표로 SWAP 메모리를 설정했습니다.

 

SwapFaq - Community Help Wiki

Introduction This FAQ is aimed at Linux novices. People always wonder how much swap they should create at install time, or after installing they may think, "have I made a large enough swap? Should I reinstall with a larger swap?" This FAQ will tell you how

help.ubuntu.com

 

 

 

SWAP 메모리 할당 방법

AWS 게시글에 따라 방법은 아래 순서와 같습니다.

 

1. SWAP 파일 생성

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


위 예제에서 스왑 파일은 2GB(128MB x 16) 입니다. 4GB를 목표한다면 count = 32로 설정하면 됩니다.

 

2. 스왑 파일의 읽기 및 쓰기 권한을 업데이트

$ sudo chmod 600 /swapfile

 

3. Linux 스왑 영역을 설정

$ sudo mkswap /swapfile

 

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

$ sudo swapon /swapfile

 

5. 절차가 성공적으로 완료되었는지 확인

$ sudo swapon -s

 

6. 부팅 시 /etc/fstab 파일을 편집하여 스왑 파일을 시작

1. 편집기에서 파일 열기

$ sudo vi /etc/fstab

 

2. 파일 끝에 다음 새 줄을 추가하고 파일을 저장한 다음 종료

/swapfile swap swap defaults 0 0

 

7. 메모리가 잘 할당되었는지 확인

free -m

 

 

 

 

 

 

+ 추가로 ec2 용량의 크기를 늘리는 방법은 아래 블로그를 참고했습니다.

 

ec2 용량 full일 때 대처법

용량 꽉참. ( df -h 로 확인.)루트볼륨 늘리기 (EBS 용량 늘리기)파티션 크기 늘리기 ( growpart 명령)파일시스템 크기 늘리기 (ext4일 경우 resize2fs 명령)끝보면 현재 용량이 꽉 차있다..EBS 콘솔에서 내

velog.io

 

 

 

참고자료

https://repost.aws/ko/knowledge-center/ec2-memory-swap-file

https://help.ubuntu.com/community/SwapFaq#How_much_swap_do_I_need.3F

https://velog.io/@hyeonseop/ec2-%EC%9A%A9%EB%9F%89-full%EC%9D%BC-%EB%95%8C-%EB%8C%80%EC%B2%98%EB%B2%95