EC2 서버에서 클론받은 프로젝트 테스트를 돌렸는데 오랜 시간이 지나도 아무런 진행이 되지 않았다.
BUILD FAIL 메세지도 출력되지 않았고 대기 시간만 증가할뿐 아무런 메시지가 출력되지 않았다.
AWS 프리티어 서비스는 램 용량을 1GB만 지원하기 때문에 서버 과부하가 걸려 무한 로딩 오류에 빠진 것이다.
문제를 해결하기 이전 CPU 사용률을 확인해보면 거의 100%가 사용되었다..
리눅스에서는 SWAP 메모리를 지정할 수 있다. SWAP 메모리란 RAM이 부족한 경우 하드디스크의 일정공간을 마치 RAM 처럼 사용하는 것이다. 이를 통해 RAM 을 증설한 효과를 얻을 수 있다.
물리적 RAM 용량 | 권장 SWAP 용량 |
---|---|
RAM 2GB 이하 | RAM 용량의 2배(최소 32MB) |
RAM 2GB 초과, 32GB 미만 | 4GB + (RAM – 2GB) |
RAM 32GB 이상 | RAM 용량의 1배 |
프리티어에서 제공하는 램 용량은 1GB 이므로 SWAP 공간은 2GB로 지정해주면 된다.
# swap 메모리 할당
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 파일을 편집하여 부팅 시 swap 파일 활성화
# 파일 열기
sudo vi /etc/fstab
# 파일 끝에 아래의 코드 추가 후 저장 및 종료
/swapfile swap swap defaults 0 0
# 적용되었는지 확인
free
swap 적용 전
swap 적용 후 (swap 공간이 할당된 것을 볼 수 있다.)
30분을 기다려도 안되던 빌드가 1분 30초만에 성공하였다..
메모리를 보니 swap 공간이 사용된 것을 확인할 수 있다.