문제 상황
프로젝트를 젠킨스를 통해 배포하려는데, 젠킨스에서 빌드를 시작하면 서버가 터져버리는 상황이 생겼습니다.
우주로 향하는 CPU 사용률...
ec2 프리티어의 기본 제공(t2.micro) 램 용량이 1GB 밖에 되질 않아, 젠킨스를 빌드하면 ssh도 접속하지 못하고 인스턴스를 재부팅해주어야했습니다.
해결 방법
서버를 구입해야하나 고민하다가, AWS의 친절한 게시글이 있어 SWAP 메모리를 지정해 해결하는 방법을 찾아 해결했습니다.
여기서 SWAP 메모리란, RAM 용량이 부족해지면 HDD의 공간을 RAM 처럼 사용하는 것입니다. (물론 HDD라 속도는 느림)
SWAP 메모리 권장 용량
스왑 메모리의 용량은 램이 1GB 이하라면 두 배 정도가 권장된다고 합니다. ec2 프리티어는 1GB이기 때문에, 2GB를 목표로 SWAP 메모리를 설정했습니다.
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 용량의 크기를 늘리는 방법은 아래 블로그를 참고했습니다.
참고자료
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
'Backend > 프로젝트' 카테고리의 다른 글
ec2 Springboot와 MySQL 컨테이너 연결, 3일 간의 삽질기 (0) | 2024.06.05 |
---|---|
맥북 m1 로컬 환경에 ngrinder를 Docker로 실행해보자 (포트 변경) (0) | 2024.05.21 |
우당당탕 눈물의 SpringBoot Redis Cache 적용기 (0) | 2024.05.12 |
[에러 해결] docker compose 실행 시 Error while fetching server API version: HTTPConnection.request() got an unexpected keyword argument 'chunked' (0) | 2024.05.09 |
젠킨스 설정 후 9090 포트 접속 시 연결이 안되는 상황 (0) | 2024.05.08 |