-
AWS EC2 build 무한로딩 에러(EC2 메모리 부족 현상 대처)프로젝트/게시판 프로젝트 2022. 6. 16. 02:43
문제가 발생한 상황
문서화 작업을 추가하여 githun에 push 하고 AWS EC2로 접속하여 git pull을 받아 새롭게 REST API 서버를 띄우려고 했습니다.
./gradlew build 명령어를 수행하던 중 테스트 부분에서 더 이상 퍼센티지가 올라가지 않으며 시간만 지나가는 상황이 발생하였습니다.
처음에는 당황하여 SSH를 그냥 닫아버리자 한동안 연결이 되지 않기도 하였습니다.
이후에 상황을 재구성 하였을 때 똑같은 상황이 발생했고 Ctrl + Z를 사용하여 해당 쉘 스크립트로부터 빠져나오고 그 뒤로부터는 EC2 환경에 엄청나게 버벅거리기 시작합니다.
이후에 sar 명령어를 사용하여 시스템 자원을 얼마나 사용하고 있는지 확인하고자 하였는데 메모리 사용량이 95%에 육박한 것 같았습니다.
저와 비슷한 에러를 겪는 분들을 구글링하여 보았습니다.
https://okky.kr/article/992276
https://okky.kr/article/1066685
https://sundries-in-myidea.tistory.com/102
결국에는 프리티어이기 때문에 메모리가 부족해서 벌어지는 일 같습니다.
해결방법
해결방법에는 2가지가 보였습니다.
1. 리눅스 스왑 메모리를 사용하자
스왑메모리란 실제 메모리가 가득 차고 더 많은 메모리가 필요할 때 디스크 공간을 대체해서 사용하는 것입니다.
즉, RAM 대신에 HDD를 가상 메모리로 사용합니다.
실제 메모리보다 하드디스크를 사용하기 때문에 속도 면에서는 현저히 떨어집니다.
dd 명령어를 통해 swap 메모리를 할당합니다.
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
128씩 16개의 공간을 만드는 것이여서 우리의 경우 count를 16으로 합니다. 즉, 2GB 정도 차지하는 것입니다.
스왑 파일에 대한 읽기 및 쓰기 권한을 업데이트합니다.
$ sudo chmod 600 /swapfile
Linux 스왑 영역을 설정합니다.
$ sudo mkswap /swapfile
스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 만듭니다.
$ sudo swapon /swapfile
절차가 성공했는지 확인합니다
$ sudo swapon -s
- /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화합니다.
$ sudo vi /etc/fstab
파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료합니다.
/swapfile swap swap defaults 0 0
free 명령어를 통해 메모리상태를 확인해봅니다.
전체적인 실행 절차입니다
스왑메모리를 적용하였으니 다니 빌드를 수행하여 보겠습니다.
성공적으로 잘 수행됩니다.
2. 메모리가 부족하기 때문에 로컬에서 빌드하여 빌드된. jar 파일만 넘겨서 실행하자.
최후의 상황에 시도하려고 했으나 1번방법으로 해결되어서 다행입니다.
출처
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/
'프로젝트 > 게시판 프로젝트' 카테고리의 다른 글
JPA 게시판 엔티티 만들기 (0) 2022.06.23 Jackson ObjectMapper의 동작과정 (0) 2022.06.20 AWS EC2에 스프링부트 프로젝트 배포하기 (0) 2022.06.14 AWS RDS 구축하기 (2) 2022.06.11 EC2 자바 11 설치 및 타임존 설정 , HostName 변경 (0) 2022.06.10