본문으로 건너뛰기
← 가이드 목록

메모리가 부족할 때 — 스왑(Swap) 추가하기

메모리(RAM)가 모자라면 프로그램이 갑자기 꺼지거나(Killed), 서버가 멈춘 것처럼 느려집니다. 스왑은 디스크 일부를 비상용 메모리로 쓰는 기능으로, 메모리가 잠깐 모자랄 때 프로그램이 강제로 꺼지는 것을 막아줍니다.

스왑은 실제 메모리보다 훨씬 느립니다. 늘 메모리가 부족하다면 스왑은 임시방편이고, 메모리가 더 큰 플랜으로 옮기는 것이 근본적인 해결책입니다. 새 서버로 옮기기

1. 메모리가 부족한지 확인하기

free -h
  • Mem: 줄의 available 값이 거의 0이라면 메모리가 부족한 상태입니다.
  • Swap: 줄이 모두 0이라면 스왑이 없는 상태입니다.

프로그램이 메모리 부족으로 강제 종료됐는지는 아래 명령어로 확인할 수 있습니다.

sudo dmesg | grep -i "out of memory"

무언가 출력된다면 메모리 부족(OOM)으로 프로그램이 종료된 적이 있는 것입니다.

2. 스왑 파일 만들기 (Ubuntu·Debian)

아래는 2GB 스왑을 만드는 예시입니다. 메모리가 4GB 이하라면 메모리와 같은 크기, 그보다 크다면 2~4GB면 충분합니다. 먼저 df -h로 디스크 여유 공간이 충분한지 확인하세요.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

free -h를 다시 실행했을 때 Swap: 줄에 2.0Gi가 보이면 성공입니다.

3. 재부팅해도 유지되게 하기

지금 상태로는 재부팅하면 스왑이 꺼집니다. 부팅할 때 자동으로 켜지도록 등록합니다.

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

4. 스왑을 덜 쓰도록 조정하기 (선택)

기본 설정은 메모리가 남아 있어도 스왑을 꽤 사용합니다. 아래처럼 바꾸면 메모리가 정말 부족할 때만 스왑을 씁니다.

echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system

스왑을 지우고 싶다면

sudo swapoff /swapfile
sudo rm /swapfile

그다음 sudo nano /etc/fstab로 파일을 열어 /swapfile로 시작하는 줄을 지우고 저장합니다.

Windows 서버는?

Windows는 "페이징 파일"이라는 이름으로 스왑이 기본 설정되어 있어 따로 만들 필요가 없습니다. 메모리가 부족하다면 작업 관리자(Ctrl + Shift + Esc) → 프로세스 탭에서 메모리를 많이 쓰는 프로그램을 확인해보세요. 더 자세한 점검 방법은 서버가 느릴 때 점검하기를 참고하세요.

해결되지 않는 문제가 있다면 고객센터로 문의해주세요.