Notice
Recent Posts
Recent Comments
Link
반응형
관리 메뉴

쿵야지식떨이

Swap Memory (스왑 메모리) 설정 본문

Infra

Swap Memory (스왑 메모리) 설정

김쿵야 2024. 8. 8. 01:26
반응형

팀 프로젝트에서 server를 담당하여 하나의 ec2에 프로젝트와 mysql을 올려 두었다.

요즘 테스트를 진행할 때마다 갑자기 mysql이 내려간다던가, 강제 종료되는 상황이 자주 생겨서 원인을 알아보던 중

메모리 부족이라는 결론이 나왔다. 메모리 부족을 해결하기 위해 선택한 방법은 Swap Memory를 사용하기로 했다!

 


🧐나의 상황은?

  • 현재 사용 중인 ec2는 t3.small이고 t3.small은 2GiB(약 2GB)의 메모리를 사용할 수 있다. 
  • 사용 중인 ec2에 접속하여 free -h를 입력하면 현재 사용 중인 메모리 현황을 볼 수 있다.  
free -h
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       1.4Gi        68Mi       2.9Mi       594Mi       496Mi
Swap:             0B          0B          0B

 

  • 사용 중인 ec2에서 실제로 입력해보면 위와 같이 나온다.
    • 총 메모리(total) 
    • 사용 중인 메모리(used)
    • 여유 메모리(free) : 사용되지 않고 비어있는 메모리
    • 공유 메모리(shared) : 여러 프로세스가 공유하고 있는 메모리
    • 버퍼/캐시(buff/cache) : 파일 시스템 캐시와 버퍼에서 사용 중인 메모리(이 메모리는 필요할 경우 다른 용도로 재사용될 수 있다. )
    • 사용 가능 메모리(available) : 사용 가능한 총 메모리(여유 메모리와 버퍼/캐시에서 사용할 수 있는 메모리를 고려하여 계산 된다.)
  • Swap 메모리는 사용하고 있지 않기 때문에 위와 같이 나온다. 
  • 사용할 수 있는 메모리가 얼마 남지 않았기 때문에 Swap 메모리를 사용하려 한다.

🧐Swap Memory란?

  • 시스템의 물리적 메모리, RAM이 부족할 때 하드 디스크 공간을 메모리처럼 사용하는 것.
  • 즉, 시스템의 메모리가 다 차면 하드 디스크나 SSD의 일부를 메모리처럼 사용하는 것이다.

장점

  1. 메모리 부족 방지
    • 물리적 메모리가 부족할 때 스왑을 이용해 시스템이 멈추지 않고 계속 작동할 수 있다. 
  2. 더 많은 작업 처리
    • 동시에 많은 프로그램을 실행할 때, 스왑을 사용해 더 많은 작업을 처리할 수 있다.
  3. 안정성 향상
    • 메모리 부족으로 인한 시스템 크래시를 예방할 수 있다.

단점

  1. 속도 저하
    • 스왑은 디스크를 사용하기 때문에 물리메모리를 사용하는 것보다 속도가 느리다.

Swap 메모리를 할당하는 것보다 ec2 메모리를 늘리면 되지 않나 싶지만 금액적인 부분도 문제가 되었기 때문에 Swap을 사용하는 것으로 결론을 내었다! 본인 상황에 맞는 걸 선택하면 될 거 같다.😊


🧐 Swap 메모리 할당 방법

❗저는 모든 과정을 'sudo su -'로 root 권한을 얻은 상태에서 진행하였습니다.

 

1. 하드 디스크 용량 확인

df -h

 

  • 스왑 메모리를 할당하기 전 사용할 수 있는 하드디스크 용량을 봐야 한다. 
  • 위 명령어(df -h)를 입력하면 /dev/root 디스크 사용 현황을 보여준다. 
    • Size : 크기
    • Used : 사용 중
    • Avail : 여유 공간
    • Use% : 사용률
    • Mounted on : 마운트 지점
    •  여기서 가장 중요하게 봐야 할 부분은 여유 공간이다.
    • swap 메모리로 얼마나 할당할 수 있는지 확인해야 한다!

2. 스왑 파일 생성

fallocate -l 4G /swapfile
  • 위 명령어를 입력하여 스왑 파일을 생성해 준다.
  • fallocate 명령어는 지정한 크기의 빈 파일을 빠르게 생성해 준다. 
  • 일반적으로, 스왑 메모리는 물리적 메모리 크기의 1~2 배 정도를 권장한다고 한다.
  • 나는 4GB의 스왑 메모리를 생성하기 위해 위와 같이 입력해 줬다.
  • 만약 다른 크기의 스왑 메모리를 원한다면 4 대신 원하는 크기의 숫자를 입력하면 된다.

3. 스왑 파일의 권한 설정

chmod 600 /swapfile
  • 스왑 파일을 안전하게 사용하려면 파일 권한을 600으로 설정해야 한다.
  • 이 명령어는 루트 사용자만 스왑 파일을 읽고 쓸 수 있도록 권한을 설정한다.

4. 스왑 영역으로 설정

mkswap /swapfile
  • 생성한 파일을 스왑 영역으로 설정한다.
  • 파일을 스왑 공간으로 초기화한다. 
  • 위 명령어를 입력하면 처음 입력했던 크기의 스왑 영역이 생성되었다는 문구가 나온다. 

5. 스왑 활성화

swapon /swapfile
  • 스왑 파일을 활성화한다.
  • 위 명령어를 통해 파일이 스왑 공간으로 사용되기 시작한다.

6. 부팅 시 스왑 자동 활성화 설정

echo '/swapfile none swap sw 0 0' >> /etc/fstab
  • 시스템이 부팅될 때 자동으로 스왑 파일을 활성화하도록 설정한다.
  • /etc/fstab 파일에 위 내용을 추가하여, 시스템 부팅 시 스왑 파일이 자동으로 활성화되도록 한다.

7. 스왑 설정 확인

free -h
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       1.5Gi        96Mi       2.9Mi       406Mi       342Mi
Swap:          4.0Gi          0B       4.0Gi
  • 설정이 완료되었는지 확인하기 위해 free -h를 입력해서 확인한다.
  • 스왑 설정이 완료되었다면 기존에 0B로 나오던 Swap이 위처럼 할당한 메모리만큼 나오게 된다.
반응형