개발 공부/AWS

EC2(Ubuntu) 가상 메모리 설정하는 방법

susong 2023. 4. 3. 20:16
728x90

가끔 서버에서 빌드를 하다가 서버가 죽어버리는 경우가 있다.

이런 경우 대부분의 케이스는 메모리가 부족해서 벌어지는 일인데, 평소에 우리가 사용하는 OS들에서는 메모리가 부족한 경험을 하기도 어려울 뿐더러 가상메모리가 설정되어있어서 부족하다고 멈추는 경우는 없다.

 

하지만, 우리가 EC2를 사용하는 경우에는 1기가 혹은 많아야 2기가의 렘으로 사용하게 되는데, 이런 경우에 평소 서비스할 때에는 서비스 볼륨에 따라 문제가 없는 경우가 많지만 빌드나 특정 초기작업에서 문제가 생길 수 있다.

 

나 같은 경우에는 EC2를 마이크로 혹은 small을 자주 사용하는데, 그렇기 때문에 서비스를 시작할 때는 꼭 아래와 같은 과정을 거친다.

 

1. EC2 Instance를 제작할 때 용량을 조금 더 추가한다

  - 많이는 필요없고, 내가 제공할 서비스에 맞춰서 설정하면된다.

  - 나같은 경우에는 설계에서 필요한 데이터양 + 2GB정도를 한다.

  - EC2에서 SSD를 추가하는 경우 gp2 기준으로 월 $0.1가 추가된다.

2. 다음과 같은 명령어를 순차적으로 실행한다.

# 먼저, swap 파일을 생성해야 한다. 아래 명령어로 먼저 /swapfile을 만들자
# 모든 명령은 shell에서 진행하면 된다.
# 미리 해당 계정 아이디에 sudo 권한을 주자 혹은 루트로 해도 된다.
sudo fallocate -l 2G /swapfile

# 생성된 swap 파일의 권한을 설정한다.
# 여기에서 권한은 반드시 600으로 해야된다. 
# swapfile의 읽기 쓰기 권한을 root에게만 제공해서 불필요한 보안 문제를 야기하지 말자
sudo chmod 600 /swapfile

# swap 파일을 포맷한다.
sudo mkswap /swapfile

# swap 파일 활성화.
sudo swapon /swapfile

3. 원하는 대로 swapfile 우선순위를 설정한다.

sudo sysctl vm.swappiness=10

나는 개인적으로 메인메모리가 가득차면 바로 가상메모리를 끌고오는 경우가 많다.

- 이 것은 내가 제공하는 서비스가 메인메모리를 넘어섰다면 지속적으로 넘어서는 경우가 많아서이다.

- 서비스의 목적에 따라서 설정하자

- 10이면 메인메모리가 다 차면 바로 가상메모리를 사용한다.(범위는 0 ~ 100이다)

- 당연하지만 가상메모리는 메인메모리보다 훨씬 느리기 때문에, 10보다 아래값을 사용하는 것은 지양하자

 

4. 간단한 가상메모리 설정 끝! 이후 보안문제들을 해결하면된다(비밀번호 등)

728x90