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

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

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

목차
  1. 메모리 현황 파악
  2. 상세 메모리 분석
  3. OOM(Out of Memory) 이벤트 확인
  4. 스왑 파일 생성
  5. swappiness 조정

메모리 현황 파악

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)

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