Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

11. 젠킨스, AWS EC2 프리티어(t2.micro) 에서 빌드하면 메모리 부족으로 서버가 터져버리는 현상 해결 본문

개인 공부/(CI | CD) Jenkins

11. 젠킨스, AWS EC2 프리티어(t2.micro) 에서 빌드하면 메모리 부족으로 서버가 터져버리는 현상 해결

이대곤 2022. 11. 6. 15:34

이번 글 작성의도

AWS EC2 프리티어에서 인스턴스 유형 t2.micro 는 RAM이 1GB(GiB) 이다. 이 용량은 매우 부족한데, 이 때문에 젠킨스에서 플젝을 빌드하면 엄청 버벅이거나 아예 멈춰버리는 현상을 보였다. 그 때마다 인스턴스를 중지시키고 다시 실행시키곤 했는데 아래는 인스턴스 유형의 업그레이드 없이 그것을 해결하는 방법이다.

스왑(swap)공간이란?

스왑 공간 (Swap space)이란 리눅스에서 물리적 메모리 (RAM)의 용량이 가득 차게될 경우 사용되는 여유 공간을 말합니다. 즉, 시스템이 처리하고 있는 데이터를 저장할 RAM이 충분하지 않을 때 스왑 공간에 이 데이터를 기록한다는 말입니다.

스왑 공간을 이용하면 RAM의 용량을 키운 효과를 얻을 수 있습니다.

AWS EC2 인스턴스에서 스왑(swap)공간을 할당시 주의할점

"하드 디스크의 파티션을 사용하여 Amazon EC2 인스턴스에서 스왑 공간으로 사용할 메모리를 할당하는 방법은 무엇인가요?"

아래는 AWS EC2에서 스왑 공간을 부여할 때 물리적 RAM 크기별 권장되는 스왑공간에 대한 표이다. 현재 내가 사용중인 t2.micro 는 물리적(시스템) RAM의 크기가 1GiB 이므로 맨 첫번째 경우에 해당하며 이에따라 권장되는 스왑 공간은 최대 2GiB 이다.

스왑공간을 생성하기전 상태 확인

- 아래의 결과에서 현재 Swap  공간의 크기가 0 인것을 알 수 있다.

free -h

1. dd 명령을 사용하여 루트경로에 스왑 파일 생성

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

bs : 블록의 크기

count : 블록 수

스왑 파일의 크기 = 블록의 크기 * 블록의 수

즉, 128M * 16 = 2GB이라서 위와 같이 입력한다. 스왑 파일의 크기가 2GB가 되는 것이다.
swapfile 이름을 가진 이 파일은 최상위 경로에 생성된다.

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

sudo chmod 600 /swapfile

3. 스왑 영역을 위에서 만든 파일로 설정

sudo mkswap /swapfile

4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용

sudo swapon /swapfile

5. 프로시저가 성공적인지 확인

sudo swapon -s

/ 경로의 swapfile 파일에 2GB가 할당된 것을 확인할 수 있다.

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

sudo vi /etc/fstab

맨 아래줄에 아래 줄 삽입하고 저장하기

/swapfile swap swap defaults 0 0

8. 스왑공간이 할당된 것 확인하기

free -h

 

참고 : https://gksdudrb922.tistory.com/196

 

[EC2] 프리티어(t2.micro)에서 Jenkins 용량 초과 문제

프리티어, 젠킨스 용량 초과 문제 AWS EC2 프리티어 유형인 t2.micro는 RAM이 1GB이다. 이는 젠킨스를 돌리기에 매우 부족하다. 따라서 t2.micro에서 아무 설정을 하지 않고 젠킨스를 돌리면 서버가 먹통

gksdudrb922.tistory.com

 

Comments