AWS EC2 프리티어 환경에서 Jenkins 실행시키기 본문
Jenkins를 t2.micro EC2 환경에서 실행시킬 경우 단순 컨테이너 실행만으로 350MB에 달하는 메모리 공간을 점유한다.
만약 이 상황에서 Jenkins를 통해 Build를 진행하게 된다면...
무려 610~650 사이의 메모리 공간을 점유하는 것을 확인할 수 있다.
AWS 에서 제공하는 t2.micro 단위의 작은 EC2 가 사용자에게 기본적으로 제공하는 메모리 용량은 1GB
스토리지 용량은 30GB로 넉넉하게 제공하지만 1GB의 협소한 메모리 공간으로는 Jenkins로 Build 를 실행시키기에는 턱없이 부족하다.
Jenkins 이외에도 메모리를 많이 차지하는 다른 프로그램들을 실행시킬 때에 자주 EC2 인스턴스가 죽는 모습에 당황하는 경우가 많고, 원인을 정확히 진단하지 못할 경우 애꿎은 EC2 인스턴스만 재부팅하거나 종료하면서 시간을 많이 뺏기게 된다.
이를 해결하기 위해, 프리티어 EC2 환경에서는 Linux 에서 제공해주는 RAM Swap 기능을 활용해 EC2 인스턴스를 괴롭히는 것을 멈추고 넉넉하게 메모리 공간을 할당하여 Jenkins 혹은 그 이외의 프로그램들이 원할하게 실행될 수 있는 환경을 만들어주도록 하자.
Ram Swap / Swap Memory 란?
스왑 메모리란, 실제 메모리 Ram이 가득 찼지만 더 많은 메모리가 필요할때 디스크 공간을 이용하여 부족한 메모리를 대체할 수 있는 공간을 의미한다.
디스크 공간을 대신 사용하는 만큼 실제 메모리처럼 속도가 빠르지 않기 때문에 실제 운영환경에서는 사용을 지양하도록 하자.
👓 아래에서 진행되는 Ram Swap은 AWS에서 제공하는 공식 문서를 참조하여 진행된다. 필요한 경우 참고바람
aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/
1. dd 명령어를 통해 Swap Memory 를 할당한다
sudo dd if=/dev/zero of=/swapfile bs=128M count=32
2. swap 파일의 읽기 쓰기 권한을 업데이트 한다
sudo chmod 600 /swapfile
3. Linux swap 영역을 할당한다
sudo mkswap /swapfile
4. swap 공간에 파일을 추가하여 swap 파일을 즉시 사용할 수 있도록 한다
sudo swapon /swapfile
5. 진행한 과정들이 성공적으로 실행되었는지 확인한다
sudo swapon -s
6. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화한다
sudo vi /etc/fstab
7. 파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료한다
/swapfile swap swap defaults 0 0
8. free -m 명령어를 통해 Swap Memory 가 잘 할당됐는지 확인해본다
free -m
'Public Cloud' 카테고리의 다른 글
[AWS] Elastic Block Storage (EBS) (0) | 2024.07.16 |
---|---|
[AWS] Slack을 사용해서 EC2 인스턴스 조작하기 (1) | 2024.07.15 |
[AWS] Elastic Network Interface (ENI) (0) | 2024.07.13 |
[AWS] Elastic Load Balancer (0) | 2024.07.11 |
Jenkins 에서 빌드한 Jar 파일 EC2 Instance 에 배포해서 실행시키기 (0) | 2024.02.22 |