리눅스 서버 swap 메모리 운영 전략

Views: 1

리눅스 서버를 운영하다 보면 Swap 메모리를 활성화해야 하는지, 비활성화해도 되는지 고민하게 된다. 메모리가 부족하면 시스템이 멈추거나 프로세스가 강제로 종료되지만 Swap을 사용하면 성능이 크게 저하될 수 있다. 서버의 목적, 메모리 구성, 애플리케이션 특성에 따라 최적의 설정이 달라지기 때문에 균형 있는 판단이 필요하다.

Swap 메모리란 무엇인가

Swap은 물리 메모리가 부족할 때 디스크의 일부를 가상 메모리로 사용하는 기능이다. 사용 빈도가 낮은 데이터를 RAM에서 디스크로 옮겨 메모리 부족 상황을 완화하며, 시스템의 안정성을 높여준다. 다만 디스크의 처리 속도는 메모리보다 느리기 때문에 Swap이 과도하게 사용되면 응답 지연과 I/O 부하가 발생할 수 있다.

Swap이 필요한 이유

메모리 부족 방지와 안정성 확보

RAM이 모두 사용된 상태에서 Swap이 없다면 리눅스 커널은 OOM(Out of Memory) Killer를 실행해 프로세스를 강제 종료한다. 중요한 프로세스가 종료될 경우 장애로 이어질 수 있어, 최소한의 Swap은 시스템 보호 수단이 된다.

비활성 프로세스 관리

일부 서비스나 백그라운드 작업은 장시간 유휴 상태로 남는다. 이러한 메모리를 Swap으로 이동하면 RAM을 더 중요한 작업에 사용할 수 있게 된다.

예기치 않은 메모리 폭증 대비

배치 작업, 로그 증가, 트래픽 폭주 등으로 메모리 사용량이 순간적으로 증가할 때 Swap은 완충 역할을 한다.

Swap을 꺼도 되는 경우

충분한 메모리를 보유한 서버

RAM 사용량이 일정하고 여유 공간이 많다면 Swap 없이도 안정적 운영이 가능하다.

초저지연이 중요한 시스템

고성능 데이터베이스, 실시간 처리 서비스, 금융 트랜잭션 시스템은 지연 시간이 치명적이므로 Swap 사용을 최소화하거나 비활성화하기도 한다.

컨테이너 기반 환경

Kubernetes나 Docker 환경에서는 cgroup으로 메모리 제한이 명확하게 설정되기 때문에 Swap보다 메모리 요청과 제한을 정확히 설정하는 것이 더 중요하다.

swappiness로 Swap 동작 제어하기

swappiness는 Swap 사용 민감도를 결정하는 값이다. 기본값은 60이며, 낮을수록 RAM을 우선 사용하고 높을수록 Swap을 자주 사용한다.

현재 값 확인

cat /proc/sys/vm/swappiness

임시 변경

sysctl -w vm.swappiness=10

영구 변경

/etc/sysctl.conf  
vm.swappiness=10

추천 값은 서버 목적에 따라 달라진다.

  • 데이터베이스, 고성능 서버: 1~10
  • 일반 웹 서버: 10~30
  • 데스크톱 및 개발 환경: 30~60

Swap 생성 및 설정 방법

Swap 파일 생성

fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swap 메모리

Swap 비활성화

swapoff -a

재부팅 후에도 유지하려면 /etc/fstab에서 Swap 항목을 제거한다.

Swap 사용량 확인

free -h
swapon -s
vmstat 1

Swap 운영 전략

메모리와 Swap의 균형

  • RAM이 충분하면 Swap 최소화
  • 메모리 부족 가능성이 있으면 예비 용량 확보
  • SSD 사용 시 성능과 수명을 고려해 적절한 제한 필요

Swap 과사용 감지

Swap in 또는 Swap out이 지속적으로 발생하면 메모리 과부하 또는 누수 가능성이 있다. 이 경우 프로세스 확인, 캐시 정리, 애플리케이션 점검이 필요하다.

로그 및 캐시 관리

/var/log, 임시 파일, 애플리케이션 캐시가 메모리를 점유해 Swap을 발생시키는 경우가 많다. 주기적인 정리가 필요하다.

결론

Swap 메모리는 서버 성능을 떨어뜨릴 수 있지만, 시스템을 보호하는 중요한 장치다. 완전히 끄기보다는 최소한의 용량을 유지하고 swappiness를 조절해 사용하는 것이 가장 현실적인 접근 방식이다. 서버 운영 목적과 메모리 사용 패턴을 분석해 Swap 설정을 최적화하면 안정성과 성능을 모두 확보할 수 있다.