프리티어 계정은 램이 1GB입니다. jenkins를 돌리기엔 매우 작습니다. 그래서 처음에 jenkins 설정을 세팅하고 빌드를 했는데 ec2 터미널이 먹통이 되더니 아무것도 되지 않습니다.
ec2를 껐다 켜니까 되길래 다시 빌드했더니 다시 먹통이었고, 이런 일을 방지하기 위해
ec2 인스턴스 사양을 늘려서 돈 나가긴 싫고...
찾아본 결과 해결방법이 있었습니다!
swap
으로 해결할 수 있었습니다.
RAM이 부족한 경우, HDD의 공간을 RAM처럼 활용
하도록 하는 메모리를 말합니다.
linux에서 RAM 용량이 가득 차서 더 이상 활용할 공간이 없을 때, swap 공간에 데이터를 기록해서 RAM 사양을 키우는 것입니다.
유의할 점은 AWS가 권장하는 swap공간입니다!
SWAP 공간은 무한정 설정할 수 있는 것이 아니라,
RAM 용량의 2배 정도여야
하며 최소 32MB 이상, 최대 2048MB(2G)를 넘으면 안된다는 것입니다.
EC2 프리티어는 1GB이기 때문에 => 2GB정도로 swap 공간을 잡도록 하겠습니다.
dd 명령어로 swap 메모리를 할당합니다.
# 조금 기다려야 함, 16*128M = 2GB 늘림
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16
swap 파일의 읽기/쓰기 권한을 업데이트해줍니다.
$ sudo chmod 600 /swapfile
Linux swap 영역을 설정합니다.
$ sudo mkswap /swapfile
swap 공간에 파일을 추가하여 swap 파일을 즉시 사용할 수 있도록 합니다.
$ sudo swapon /swapfile
본 과정이 성공적으로 진행되었는지 확인해줍시다.
$ sudo swapon -s
/etc/fstab
파일을 편집하여 부팅 시 스왑 파일을 활성화합니다.
편집기에서 파일을 엽니다.
$ sudo vi /etc/fstab
파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료합니다.
/swapfile swap swap defaults 0 0
추가된 swap 공간은 free 명령어로 확인
free
before
after