AWS EC2 프리티어 환경에서 Jenkins 실행시키기

덤벨로퍼·2024년 2월 21일
0

개인공부

목록 보기
1/11

Jenkins를 t2.micro EC2 환경에서 실행시킬 경우 단순 컨테이너 실행만으로 350MB에 달하는 메모리 공간을 점유한다.

-> docker stats 로 확인해본 jenkins 의 메모리 점유율

만약 이 상황에서 Jenkins를 통해 Build를 진행하게 된다면...

jenkins 로 DB연결 없는 간단한 Spring Boot App을 Build 했을 시의 메모리 점유율

무려 610~650 사이의 메모리 공간을 점유하는 것을 확인할 수 있다.

나의 작은 프리티어 EC2
AWS 에서 제공하는 t2.micro 단위의 작은 EC2 가 사용자에게 기본적으로 제공하는 메모리 용량은 1GB

스토리지 용량은 30GB로 넉넉하게 제공하지만 1GB의 협소한 메모리 공간으로는 Jenkins로 Build 를 실행시키기에는 턱없이 부족하다.

Jenkins 이외에도 메모리를 많이 차지하는 다른 프로그램들을 실행시킬 때에 자주 EC2 인스턴스가 죽는 모습에 당황하는 경우가 많고, 원인을 정확히 진단하지 못할 경우 애꿎은 EC2 인스턴스만 재부팅하거나 종료하면서 시간을 많이 뺏기게 된다.

이를 해결하기 위해, 프리티어 EC2 환경에서는 Linux 에서 제공해주는 RAM Swap 기능을 활용해 EC2 인스턴스를 괴롭히는 것을 멈추고 넉넉하게 메모리 공간을 할당하여 Jenkins 혹은 그 이외의 프로그램들이 원할하게 실행될 수 있는 환경을 만들어주도록 하자.

Ram Swap / Swap Memory 란?
스왑 메모리란, 실제 메모리 Ram이 가득 찼지만 더 많은 메모리가 필요할때 디스크 공간을 이용하여 부족한 메모리를 대체할 수 있는 공간을 의미한다.
디스크 공간을 대신 사용하는 만큼 실제 메모리처럼 속도가 빠르지 않기 때문에 실제 운영환경에서는 사용을 지양하도록 하자.

aws 공식 문서
https://repost.aws/ko/knowledge-center/ec2-memory-swap-file

  1. dd 명령어를 통해 Swap Memory 를 할당한다
sudo dd if=/dev/zero of=/swapfile bs=128M count=32
  1. swap 파일의 읽기 쓰기 권한을 업데이트 한다
sudo chmod 600 /swapfile
  1. Linux swap 영역을 할당한다
sudo mkswap /swapfile
  1. swap 공간에 파일을 추가하여 swap 파일을 즉시 사용할 수 있도록 한다
sudo swapon /swapfile
  1. 진행한 과정들이 성공적으로 실행되었는지 확인한다
sudo swapon -s
  1. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화한다
sudo vi /etc/fstab
  1. 파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료한다
/swapfile swap swap defaults 0 0
  1. free -m 명령어를 통해 Swap Memory 가 잘 할당됐는지 확인해본다
free -m

Swap 공간이 잘 할당된 것을 확인할 수 있다

profile
💪 점진적 과부하로 성장하는 개발자

0개의 댓글