AWS EC2 서버 프리티어 성능 저하 시 Swap 메모리 설정으로 해결하는 방법
AWS EC2 프리티어 환경에서 Linux 서버를 운영하다 보면 갑자기 서버가 느려지거나 프로그램이 멈추는 현상을 경험할 수 있습니다. 특히 메모리가 적은 소형 인스턴스에서 웹서버, 데이터베이스, Docker 등의 프로그램을 동시에 실행하면 메모리 부족이 원인일 가능성을 확인해볼 필요가 있습니다.
이럴 때 사용할 수 있는 방법 중 하나가 바로 Swap 메모리 설정입니다.
Swap은 실제 RAM을 추가하는 기능은 아니지만, RAM이 부족할 때 디스크 공간 일부를 임시 메모리처럼 활용할 수 있도록 설정하는 방법입니다. 따라서 메모리 부족으로 인한 갑작스러운 프로세스 종료를 완화하는 데 도움이 될 수 있습니다.
다만 Swap을 사용한다고 서버의 물리적인 RAM이 증가하는 것은 아닙니다. 디스크를 이용하기 때문에 실제 RAM보다 속도가 느리며, 지속적인 메모리 부족을 해결하는 근본적인 방법은 서버 사양을 높이거나 실행 중인 프로그램의 메모리 사용량을 줄이는 것입니다.
1. AWS EC2 프리티어 서버가 느려지는 이유

EC2 인스턴스는 종류에 따라 CPU와 메모리 용량이 다릅니다. 예를 들어 AWS 공식 사양에서 t3.micro는 2개의 vCPU와 1GiB 메모리를 제공합니다.
1GiB 정도의 메모리는 간단한 웹사이트나 학습용 서버에는 사용할 수 있지만 여러 프로그램을 동시에 실행하면 부족할 수 있습니다.
예를 들어 다음과 같은 프로그램을 한 서버에서 동시에 실행한다고 생각해보겠습니다.
- Nginx
- MySQL
- Docker
- Node.js
- Python
- 각종 시스템 프로세스
이런 환경에서는 사용 가능한 메모리가 빠르게 줄어들 수 있습니다.
메모리가 부족하면 Linux 시스템이 프로세스를 종료하거나 서비스가 정상적으로 작동하지 않는 문제가 발생할 수도 있습니다.
2. 먼저 현재 메모리 상태 확인하기
Swap을 설정하기 전에 현재 서버의 메모리 상태부터 확인하는 것이 좋습니다.
SSH로 EC2 서버에 접속한 다음 다음 명령어를 입력합니다.
free -h
결과는 대략 다음과 같은 형태로 표시됩니다.
total used free
Mem: 950Mi 500Mi 100Mi
Swap: 0B 0B 0B
여기에서 중요한 부분은 Mem과 Swap입니다.
Mem은 실제 RAM 상태를 나타내고, Swap은 Swap 공간의 사용 상태를 보여줍니다.
Swap이 다음과 같이 표시된다면 현재 Swap 공간이 설정되지 않은 상태입니다.
Swap: 0B 0B 0B
3. Swap 파일을 만들기
이제 서버의 디스크 공간을 이용해 Swap 파일을 만들어보겠습니다.
먼저 다음 명령어를 실행합니다.
sudo fallocate -l 2G /swapfile
위 명령어는 /swapfile이라는 이름의 2GB 파일을 생성합니다.
다만 서버 환경이나 파일 시스템에 따라 fallocate가 정상적으로 작동하지 않는 경우가 있습니다.
그럴 때는 다음과 같은 방식으로 생성할 수 있습니다.
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
이 방법은 1MB 단위로 2048개 블록을 만들어 약 2GB 크기의 파일을 생성합니다.
4. Swap 파일 권한 설정하기
Swap 파일을 만든 다음에는 권한을 제한하는 것이 좋습니다.
sudo chmod 600 /swapfile
이제 파일 권한을 확인합니다.
ls -lh /swapfile
권한이 적절하게 설정되어 있는지 확인한 다음 다음 단계로 넘어갑니다.
5. Swap 영역으로 초기화하기
이제 생성한 파일을 Linux Swap 영역으로 지정합니다.
sudo mkswap /swapfile
정상적으로 실행되면 Swap 영역이 생성되었다는 메시지를 확인할 수 있습니다.
그다음 Swap을 활성화합니다.
sudo swapon /swapfile
이제 현재 Swap 상태를 다시 확인합니다.
free -h
정상적으로 설정됐다면 다음과 같이 Swap 용량이 표시됩니다.
Swap: 2.0Gi 0B 2.0Gi
이제 RAM이 부족한 상황에서 Linux가 설정된 Swap 공간을 사용할 수 있습니다.
6. 서버를 재부팅해도 Swap 유지하기
여기서 중요한 과정이 하나 더 있습니다.
현재 상태에서 Swap을 활성화하면 서버를 재부팅한 후 설정이 사라질 수 있기 때문에 /etc/fstab에 등록하는 것이 좋습니다.
다음 명령어를 실행합니다.
sudo nano /etc/fstab
파일의 마지막 부분에 다음 내용을 추가합니다.
/swapfile swap swap defaults 0 0
저장한 뒤 서버를 재부팅하지 않고도 설정 상태를 확인할 수 있습니다.
sudo swapon --show
또는
free -h
를 사용하면 됩니다.
7. Swap 사용량 확인하기
Swap을 설정했다고 해서 항상 Swap이 많이 사용되는 것은 아닙니다.
현재 사용량은 다음 명령어로 확인할 수 있습니다.
free -h
또는
swapon --show
메모리 상태를 실시간으로 확인하고 싶다면 다음 명령어도 활용할 수 있습니다.
top
서버에 htop이 설치되어 있다면 다음과 같이 사용할 수도 있습니다.
htop
이를 통해 어떤 프로세스가 메모리를 많이 사용하는지 확인할 수 있습니다.
8. Swap을 설정하면 서버가 빨라질까?
여기서 가장 많이 오해하는 부분입니다.
Swap을 설정한다고 서버 자체의 성능이 올라가는 것은 아닙니다.
Swap은 RAM이 부족한 상황에서 시스템이 사용할 수 있는 임시 공간을 확보하는 역할에 가깝습니다.
RAM은 매우 빠른 메모리이지만 Swap은 디스크를 이용하기 때문에 RAM보다 느립니다.
따라서 Swap은 다음과 같은 상황에서 도움이 될 수 있습니다.
- 메모리가 부족한 상황 완화
- 갑작스러운 메모리 부족에 대한 완충 공간 확보
- 가벼운 서버에서 일시적인 메모리 사용량 증가 대응
- 일부 서비스가 메모리 부족으로 종료되는 상황 완화
반대로 Swap을 계속 많이 사용하고 있다면 서버의 실제 메모리가 부족하다는 신호일 수 있습니다.
이 경우에는 실행 중인 프로그램을 줄이거나 더 많은 메모리를 가진 EC2 인스턴스로 변경하는 것을 고려해야 합니다.
9. Swap 크기는 얼마나 설정해야 할까?
Swap 크기는 서버의 메모리 용량과 실행하는 프로그램에 따라 달라집니다.
학습용 또는 개인 테스트 서버라면 1~2GB 정도의 Swap을 설정해 메모리 부족 상황에 대비할 수 있습니다.
하지만 무조건 큰 Swap을 만드는 것이 좋은 것은 아닙니다.
Swap은 결국 EBS 등의 저장공간을 사용하므로 서버의 디스크 공간도 함께 고려해야 합니다.
특히 저장공간이 작은 서버에서는 Swap을 너무 크게 설정하지 않는 것이 좋습니다.
10. Swap 사용을 적절하게 조절하기
Linux에는 swappiness라는 설정이 있습니다.
이 값은 시스템이 메모리를 사용할 때 Swap을 얼마나 적극적으로 사용하는지를 결정하는 데 영향을 줍니다.
현재 값을 확인하려면 다음 명령어를 사용할 수 있습니다.
cat /proc/sys/vm/swappiness
환경에 따라 기본값이 표시됩니다.
값을 변경하려면 다음과 같이 설정할 수 있습니다.
sudo sysctl vm.swappiness=10
재부팅 후에도 유지하려면 /etc/sysctl.conf 등에 설정을 추가할 수 있습니다.
vm.swappiness=10
다만 모든 서버에서 특정 값을 무조건 적용하는 것이 정답은 아닙니다. 실제 메모리 사용량과 서비스 특성을 확인하면서 조정하는 것이 좋습니다.
11. EC2 프리티어에서는 비용도 확인해야 한다
AWS 프리티어는 계정 생성 시점에 따라 적용 조건이 달라졌습니다.
AWS 공식 문서에 따르면 2025년 7월 15일 이전에 생성한 계정과 2025년 7월 15일 이후 생성한 계정의 프리티어 혜택 및 적용 기간이 다릅니다. 따라서 예전의 "무조건 1년 무료"라는 설명만 보고 서버를 운영해서는 안 됩니다.
특히 T3 인스턴스는 기본적으로 Unlimited 모드로 시작할 수 있으며, CPU 사용량이 장기간 기준치를 초과하면 추가 비용이 발생할 수 있습니다. AWS도 프리티어 사용자는 이 부분을 확인하도록 안내하고 있습니다.
따라서 서버를 만들었다면 AWS Billing 화면에서 실제 사용량과 비용을 주기적으로 확인하는 습관이 중요합니다.
마무리
AWS EC2 소형 인스턴스에서 서버를 운영하다 보면 메모리 부족으로 성능이 떨어지거나 프로그램이 불안정하게 작동하는 경우가 있습니다.
이때 Linux에 Swap을 설정하면 실제 RAM이 부족한 순간에 사용할 수 있는 추가적인 디스크 기반 공간을 확보할 수 있습니다.
전체적인 설정 과정은 간단합니다.
메모리 확인
↓
Swap 파일 생성
↓
파일 권한 설정
↓
Swap 영역 초기화
↓
Swap 활성화
↓
/etc/fstab 등록
↓
사용량 확인
다만 Swap은 RAM을 대신하는 기능이 아니라 메모리 부족을 완화하는 보조 수단입니다.
Swap 사용량이 계속 높다면 단순히 Swap 크기를 늘리기보다는 어떤 프로그램이 메모리를 많이 사용하는지 먼저 확인하고, 필요하다면 EC2 인스턴스의 메모리 용량을 높이는 것이 더 근본적인 해결 방법입니다.
AWS EC2는 인스턴스 유형에 따라 CPU와 메모리 구성이 달라지므로 서버의 실제 작업량에 맞는 인스턴스를 선택하는 것이 중요합니다.
작은 프리티어 서버일수록 무조건 사양을 높이기보다 메모리 사용량을 확인하고 Swap과 서비스 최적화를 함께 활용하는 것이 효율적인 서버 관리 방법입니다.