/ Linux / 상세보기

CentOS 메모리 관리

👁 조회 7 📅 2026-05-28

(1) 메모리 사용량 상위 10개 프로세스

ps aux --sort=-%mem | head -11


(2) 또는 더 보기 좋게

ps -eo pid,user,%mem,%cpu,rss,command --sort=-%mem | head -11



(3) Swap을 메모리로 되돌리고 싶다면 물리 메모리에 여유가 있을 때 swap을 비울 수 있습니다.


swapoff -a && swapon -a

⚠️ 주의: swapoff는 swap의 내용을 메모리로 다시 올리는 작업이라 잠시 시스템이 느려질 수 있습니다. 서비스 운영 중이라면 트래픽이 적은 시간에 하세요.



(4) 캐시만 정리하려면 (필요시)


# 페이지 캐시만 정리 (안전)

sync && echo 1 > /proc/sys/vm/drop_caches


# 페이지 캐시 + dentries + inodes (좀 더 강력)

sync && echo 3 > /proc/sys/vm/drop_caches


♣ 다만 캐시 정리는 일반적으로 권장하지 않습니다. 리눅스가 알아서 관리하거든요.



(5) 모니터링


# 메모리 추이 보기 (5초마다)

watch -n 5 free -h


# MySQL 커넥션 상태

watch -n 10 'mysql -u root -p비밀번호 -e "SHOW STATUS LIKE \"Threads_%\";"'



(6) swappiness


리눅스는 실제 메모리(RAM)가 부족해지면 디스크의 일부 공간을 메모리처럼 쓰는 스왑(Swap) 공간을 활용합니다.


vm.swappiness 값은 시스템이 실제 RAM 대신 이 스왑 공간을 얼마나 적극적으로 사용할지 결정하는 0에서 100 사이의 비율(가중치)입니다.


값이 높을수록 (예: 60 이상): RAM 공간이 아직 남아있어도 디스크의 스왑 공간을 적극적으로 사용합니다.


값이 낮을수록 (예: 10 이하): RAM 공간을 최대한 끝까지 쥐어짜서 쓰고, 정말 어쩔 수 없을 때만 디스크(스왑)를 사용합니다.


vm.swappiness=10


CentOS의 기본(Default) swappiness 값은 보통 30 또는 60으로 설정되어 있습니다.


이를 10으로 낮추겠다는 것은 "웬만하면 속도가 느린 디스크(Swap)로 데이터 넘기지 말고, 최대한 빠른 실제 RAM 안에서 다 해결해라"라고 시스템에 명령하는 것입니다.


💡 왜 이렇게 설정하나요?

디스크(HDD/SSD)는 RAM보다 속도가 훨씬 느립니다. 시스템이 스왑을 자주 쓰기 시작하면 서버가 눈에 띄게 버벅이는 '데드락'에 가까운 현상이 발생할 수 있습니다.

따라서 데이터베이스(MySQL, Oracle)나 웹 서버 등 빠른 반응 속도가 생명인 서버 환경에서는 이 값을 10 이하로 낮춰서 성능을 방어합니다.


※ 주의할 점 (영구 적용 방법)

sysctl vm.swappiness=10 명령어는 임시 적용입니다. 서버를 재부팅하면 CentOS의 기본값으로 다시 돌아가 버립니다.


만약 이 설정을 서버가 꺼져도 계속 유지(영구 적용)하고 싶다면 아래 작업을 해주셔야 합니다.


sudo vi /etc/sysctl.conf

파일 맨 아래에 다음 내용 추가 후 저장: vm.swappiness = 10


저장한 설정 바로 반영하기: sudo sysctl -p