티스토리 뷰

devops/aws ec2

ec2 swap memory 설정하기

안양사람 2021. 11. 11. 02:15
728x90
SMALL

배경

지난번 프로젝트 때 cloud watch를 통해 봤을 때 메모리 용량이 초과되지 않았는데 서버가 계속 죽었다. 새벽 3,4시 쯤에 다들 열심히 원인을 분석했는데 그 중 팀원 한명이 원인을 찾았다. ec2에서는 기본적으로 swap memory를 사용하지 않기 때문에 이런 현상이 일어난다고 했다. 그리고 그때 팀원이 문제를 해결하고 넘어갔다. 그때 너무 바빠서 신경을 쓰지 못했다. 그냥 그런게 있구나 이런데서도 cs 배경지식이 이용되는구나 했었다. 그런데 혼자서 새로 프로젝트를 하던 와중에 또다시 문제가 발생했다. 설마 그때 그건가?? 하는 생각이 문득 들었다. 그냥 우연히겠지 하고 인스턴스를 재시작했는데 계속 서버가 죽었다. 그래서 스왑 메모리 설정을 일단 해보자 하는 생각이 들었다.

 

swap memory 설정하기

사실 cs에 대한 지식이 없어도 이정도는 설정할 수 있다. 물론 스왑 메모리를 설정해야겠다는 생각은 못하겠지만 말이다... aws홈페이지는 개인적으로 조금 이해하기 어렵게 되어있다고 생각하는데 이건 굉장히 쉽다. 그냥 아무 생각없이 코드만 따라 쳐도 설정할 수 있다.  우리는 스왑 파일을 만들어줘야 한다. 스왑 파일을 만들어주자. 아래에는 aws 홈페이지 내용을 적어두었다.

스왑 파일 설정

1.    dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성합니다. 명령에서 bs는 블록 크기이고 count는 블록 수입니다. 스왑 파일의 크기는 dd 명령의 블록 크기 옵션에 블록 수 옵션을 곱한 값입니다. 이러한 값을 조정하여 원하는 스왑 파일 크기를 결정합니다.

지정한 블록 크기는 인스턴스에서 사용 가능한 메모리보다 작아야 합니다. 그렇지 않으면 "memory exhausted" 오류가 발생합니다.

이 예제 dd 명령에서 스왑 파일은 4GB(128MB x 32)입니다.

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

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

$ sudo chmod 600 /swapfile

3.    Linux 스왑 영역을 설정합니다.

$ sudo mkswap /swapfile

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

$ sudo swapon /swapfile

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

$ sudo swapon -s

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

편집기에서 파일을 엽니다.

$ sudo vi /etc/fstab

파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료합니다.

/swapfile swap swap defaults 0 0

 

https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/

 

스왑 파일을 사용하여 Amazon EC2 인스턴스의 스왑 공간으로 메모리 할당

1.    dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성합니다. 명령에서 bs는 블록 크기이고 count는 블록 수입니다. 스왑 파일의 크기는 dd 명령의 블록 크기 옵션에 블록 수 옵션을 곱

aws.amazon.com

 

후기

사실 나는 운영체제에 대한 이해가 부족하다. 운영체제를 공부하던 와중에 우아한테크캠프가 붙어버려서 급하게 중단하게 되었다. cs의 필요성은 알고있고 느끼고도 있는데 내가 미루고 있나? 하는 생각이 들기도 한다. 지금 공부해야 할 우선순위가 무엇일까? 최근 프로젝트에서 바닐라자바스크립트는 다루었다. 물론 자바스크립트는 기본으로 계속 공부해야 될 내용이다. 백엔드는 지금도 충분히 공부하고 있다. 그러면 지금은 cs를 공부할 시기인가?? 객체지향과 클린코드도 공부하고 싶다. 서버사이드랜더링과 리액트를 tdd방식으로 만들어보고 싶기도 하다. 또 지금 취업할 시기기도 하다. 머리가 복잡하다.

아 그리고 스왑 메모리를 설정해준 결과 서버가 멀쩡히 살아있다. 성공!!

728x90
LIST
댓글
공지사항