EC2서버에서 스프링 부트 프로젝트를 돌리는데 계속 빌드를 하다 멈추는 일이 발생했다.
디스크 메모리 용량을 확인해보니 아직 한참 남아서 cpu 사용량을 확인해보니 RAM이 딸려서 발생하는 문제인 것 같았다.
알아보니 t2.micro의 램이 1GB밖에 안돼서 현재 서버에서 스프링 부트 빌드만 해도 터지는 것 같았다.
이전 스프링 부트 프로젝트를 할 때는 램이 모잘라서 터지진 않았는데
이번 스프링 부트 프로젝트는 사용하는 기술들이 많아 몸집이 상당히 커져서 계속 터지는 것 같다.
다행히 리눅스에서는 SWAP 메모리를 지정할 수 있어서 RAM이 부족할 때 HDD의 일정 공간을 마치 RAM처럼 사용할 수 있었다. 속도가 좀 느리긴 하지만 그래도 돌아가는게 어디인가
(실무에서는 좋은 해결 방법이 아닌 것 같은데 애초에 실무에서 쓰이는 서버라면 RAM이 1GB이지 않을 것 같다ㅎㅎ)
램이 2GB이하일 땐 보통 RAM 용량의 2배를 SWAP 메모리로 잡는데 ec2는 1GB로 SWAP 메모리는 2GB로 잡아서 설정할 예정이다. 이때 주의해야되는게 SWAP 메모리의 공간이 최소 32MB는 돼야한다고 한다.
free 명령어를 통해 메모리(램)과 SWAP 메모리를 확인해 볼 수 있다.
현재 이렇게 SWAP 메모리 할당이 안돼있는 상태이다.
이제 SWAP 메모리를 할당해보자.
sudo dd if=/dev/zero of=/swapfile bs=128M count=16 //2GB정도 공간 할당
sudo chmod 600 /swapfile //swap 파일 권한 업데이트
sudo mkswap /swapfile //linux swap 영역 설정
sudo swapon /swapfile //swap space에 swap file 추가
sudo swapon -s //위 명령어들 성공 확인
다음으로 /etc/fstab 파일을 편집하여 부팅 시 swap 파일을 활성화 해줘야 한다.
$ sudo vi /etc/fstab
제일 마지막에 아래 내용을 추가해준다.
/swapfile swap swap defaults 0 0
다시 free 명령어로 확인해보자.
참고사이트
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/
https://sundries-in-myidea.tistory.com/102
https://incomeplus.tistory.com/284?category=868671
'Spring > 개인 공부' 카테고리의 다른 글
[Spring] Jackson 직렬화 Annotation 정리 (0) | 2022.04.09 |
---|---|
[Data JPA] 페이징 처리 aka pagination, sorting, pageable (0) | 2022.03.31 |
[EC2/무중단 서비스] 스프링 부트 프로젝트 빌드하고 무중단 서비스 실행, 종료하기 (0) | 2022.02.10 |
[AWS RDS] RDS란? aws 프리티어 계정으로 RDS 임대, 초기 설정하기 (0) | 2022.02.09 |
[스프링 부트] 스프링 부트 data jpa 프로젝트에 Querydsl 적용하기 (0) | 2022.02.04 |