/엔지니어/OS / 시스템/메모리·스왑 관리 — free, vmstat, 스왑
OS / 시스템중급UbuntuDebianCentOSRHEL메모리스왑OOM

메모리·스왑 관리 — free, vmstat, 스왑 설정

서버 메모리 상태 파악, OOM 원인 분석, 스왑 파일 생성 및 스왑니스 조정까지 실무 중심으로 정리합니다.

메모리 현황 파악

Bash
# 기본 메모리 정보
free -h

# 출력 예시:
#               total  used   free   shared  buff/cache  available
# Mem:           7.6G  2.1G   3.2G     45M        2.3G      5.1G
# Swap:          2.0G  100M   1.9G

# "available"이 실제 사용 가능한 메모리 (buff/cache 포함)

상세 메모리 분석

Bash
# /proc/meminfo 상세 정보
cat /proc/meminfo | grep -E "MemTotal|MemFree|MemAvailable|SwapTotal|SwapFree"

# 프로세스별 메모리 사용량
ps aux --sort=-%mem | head -10

# vmstat으로 메모리 + 스왑 + CPU 동향 (1초 간격)
vmstat 1 10

OOM(Out of Memory) 이벤트 확인

Bash
# OOM killer 발동 기록
journalctl -k | grep -i "oom\|killed process\|memory"

# 특정 프로세스의 OOM score 확인 (높을수록 먼저 킬됨)
cat /proc/$(pgrep myapp)/oom_score

# OOM에서 보호 (-1000: 절대 킬 안됨)
echo -1000 > /proc/$(pgrep sshd)/oom_score_adj

스왑 파일 생성

클라우드 서버(AWS t2, t3)는 기본적으로 스왑이 없습니다.

Bash
# 4GB 스왑 파일 생성
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

# 부팅 시 자동 활성화
echo '/swapfile none swap sw 0 0' >> /etc/fstab

# 확인
swapon --show
free -h

swappiness 조정

swappiness는 커널이 RAM 대신 스왑을 얼마나 적극적으로 사용하는지 결정합니다 (0~100, 기본 60).

Bash
# 현재 값 확인
cat /proc/sys/vm/swappiness

# 즉시 변경
sysctl vm.swappiness=10

# 영구 설정
echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p
  • 데이터베이스 서버: vm.swappiness=10 (RAM 우선)
  • 일반 서버: vm.swappiness=10~30
  • 기본값 60은 데스크탑용으로 설계됨
#메모리#스왑#OOM#vmstat#free#linux
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서GNU/Linux man 페이지

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.