[AWS] EC2 Out Of Memory

스프링 부트를 개발하는 과정에서 갑작스레 연락이 왔다. 서버와의 통신이 안된다는 것이었다.

 

AWS EC2에 접속하니 실행되고 있어야할 프로세스가 죽어있었다. 기록된 로그를 확인하니 다음 문제가 적혀있었다.

etc-image-0

원인은 간단했다. AWS EC2가 프리 티어이기에 메모리가 1기가만 할당되어 있는 상태였다. 그에 반해 자신이 수행해야 일들이 많기에 발생한 문제였다. 

 

빠르게 문제를 해결할 수 있었는데 이는 AWS에 공식문서가 이미 존재했기 때문이다. 가상 메모리를 통해 문제를 해결하였다. 

  1. dd 명렁을 사용하여 루트파일 시스템에 스왑 파일 생성한다. 스왑 파일은 2GB(128MB x 16)으로 설정하였다.

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16

2. 스왑 파일의 읽기 및 쓰기 권한을 업데이트한다.

$ sudo chmod 600 /swapfile

3. 리눅스 스왑 영역을 설정한다.

$ sudo mkswap /swapfile

4. 스왑 공간에 스왑 파일을 추가하여 즉시 사용할 수 있도록 한다.

$ sudo swapon /swapfile

5. 프로시저가 성공적인지 확인.

$ sudo swapon -s

6. /etc/fstab 파일을 편집하여 부팅시 스왑파일을 활성화한다

$ sudo vi /etc/fstab

7. 파일 끝에 다음 줄을 새로 추가하고 파일을 저장후 종료

/swapfile swap swap defaults 0 0

참조:

https://aws.amazon.com/ko/premiumsupport/knowledge-centerec2-memory-swap-file/ https://sundries-in-myidea.tistory.com/102