[Linux] 서버 Memory Swap 사용량

2025. 2. 17. 00:51·개발 (Development)/Linux

서버에서 Memory Usage: 80% 이상, Swap Usage: 99%인 경우, 시스템이 심각한 메모리 부족 상태에 빠졌을 가능성이 높습니다. 이 상태에서는 프로세스가 응답하지 않거나, 심한 경우 OOM(Out of Memory) Killer가 동작하여 중요한 프로세스가 종료될 수도 있습니다.

이 상황에서 확인해야 할 사항

  1. 메모리 사용량이 높은 프로세스 확인
ps aux --sort=-%mem | head -10

메모리 사용량이 높은 상위 10개 프로세스를 확인합니다. 불필요한 프로세스를 종료할지 검토합니다.

  1. 실시간 메모리 및 스왑 사용량 확인
free -h

available 메모리가 거의 없는 경우, 스왑이 과도하게 사용되면서 시스템이 느려질 수 있습니다.

vmstat 1 10

si(swap in)와 so(swap out)가 높은 값을 보이면 스왑이 과도하게 사용되고 있는 상태입니다.

  1. OOM Killer가 동작했는지 확인
dmesg | grep -i "out of memory"

OOM Killer가 실행되어 프로세스가 강제 종료되었는지 확인합니다.

  1. 메모리 누수 여부 확인

특정 애플리케이션이 지속적으로 메모리를 증가시키는지 모니터링해야 합니다. top, htop, smem 등을 활용해 확인할 수 있습니다.

해결 방법

  1. 불필요한 프로세스 종료
kill -9 <PID>

또는

pkill -f <프로세스_이름>
  1. 캐시 메모리 정리 (일시적인 해결책)
sync; echo 3 > /proc/sys/vm/drop_caches

캐시 메모리를 정리하여 약간의 여유 공간을 확보할 수 있습니다. 하지만 근본적인 해결책은 아닙니다.

  1. 스왑 재설정 (일시적인 해결책)
swapoff -a && swapon -a

스왑을 재설정하여 스왑 공간을 초기화할 수 있습니다. 그러나 원인을 해결하지 않으면 다시 문제가 발생할 가능성이 높습니다.

  1. 메모리 증설 또는 스왑 공간 증가

물리적인 RAM을 추가하는 것이 가장 확실한 해결책입니다. 스왑 공간을 늘릴 수도 있지만, 근본적인 해결책은 아닙니다.

dd if=/dev/zero of=/swapfile bs=1G count=4
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
  1. 메모리 최적화 설정

sysctl을 활용하여 스왑 사용 정책을 조정할 수 있습니다. 예를 들어, 아래 설정은 스왑을 덜 사용하도록 조정합니다.

sysctl -w vm.swappiness=10
echo "vm.swappiness=10" >> /etc/sysctl.conf
  1. 서비스 최적화 및 설정 변경

특정 애플리케이션이 과도한 메모리를 사용하는 경우 설정을 조정합니다. 예를 들어, PostgreSQL을 사용하는 경우 shared_buffers, work_mem 등의 값을 조정할 수 있습니다.

결론

메모리와 스왑 사용률이 높으면 시스템이 매우 느려지거나 응답하지 않을 가능성이 큽니다. 즉시 대응할 방법(프로세스 종료, 캐시 정리, 스왑 재설정)과 장기적인 해결책(메모리 증설, 서비스 최적화)을 고려해야 합니다.

반응형

'개발 (Development) > Linux' 카테고리의 다른 글

[Linux] Bash에서 `source` 명령어 사용법 정리  (0) 2025.09.07
[Linux/Ubuntu] Ubuntu 서버 LVM 루트 디스크 용량 부족 문제 해결  (1) 2025.06.01
[Linux] ll 명령어 완벽 가이드  (0) 2025.02.17
[Linux] 서버 캐시 정리 명령어  (0) 2024.12.21
[Linux/Ubuntu 20.04 LTS] 부팅할 때 특정 파일을 실행  (0) 2024.05.07
'개발 (Development)/Linux' 카테고리의 다른 글
  • [Linux] Bash에서 `source` 명령어 사용법 정리
  • [Linux/Ubuntu] Ubuntu 서버 LVM 루트 디스크 용량 부족 문제 해결
  • [Linux] ll 명령어 완벽 가이드
  • [Linux] 서버 캐시 정리 명령어
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • 개발 (Development) (165)
        • Algorithm (1)
        • Angular (1)
        • AWS (6)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (31)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (11)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    springboot
    AWS
    JPA
    리눅스 마스터 2급
    오답노트
    Vue.js
    백준알고리즘
    pandas
    deepseek
    데이터분석
    PostgreSQL
    java
    Kafka
    자바
    Linux
    JSON
    리눅스 마스터 2급 2차
    DevOps
    timescaledb
    ADsP
    백준자바
    MyBatis
    백준온라인저지
    Kubernetes
    python
    Spring boot
    백준
    Linux master
    docker
    javascript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Linux] 서버 Memory Swap 사용량
상단으로

티스토리툴바