서버에서 Memory Usage: 80% 이상, Swap Usage: 99%인 경우, 시스템이 심각한 메모리 부족 상태에 빠졌을 가능성이 높습니다. 이 상태에서는 프로세스가 응답하지 않거나, 심한 경우 OOM(Out of Memory) Killer가 동작하여 중요한 프로세스가 종료될 수도 있습니다.
이 상황에서 확인해야 할 사항
- 메모리 사용량이 높은 프로세스 확인
ps aux --sort=-%mem | head -10
메모리 사용량이 높은 상위 10개 프로세스를 확인합니다. 불필요한 프로세스를 종료할지 검토합니다.
- 실시간 메모리 및 스왑 사용량 확인
free -h
available
메모리가 거의 없는 경우, 스왑이 과도하게 사용되면서 시스템이 느려질 수 있습니다.
vmstat 1 10
si
(swap in)와 so
(swap out)가 높은 값을 보이면 스왑이 과도하게 사용되고 있는 상태입니다.
- OOM Killer가 동작했는지 확인
dmesg | grep -i "out of memory"
OOM Killer가 실행되어 프로세스가 강제 종료되었는지 확인합니다.
- 메모리 누수 여부 확인
특정 애플리케이션이 지속적으로 메모리를 증가시키는지 모니터링해야 합니다. top
, htop
, smem
등을 활용해 확인할 수 있습니다.
해결 방법
- 불필요한 프로세스 종료
kill -9 <PID>
또는
pkill -f <프로세스_이름>
- 캐시 메모리 정리 (일시적인 해결책)
sync; echo 3 > /proc/sys/vm/drop_caches
캐시 메모리를 정리하여 약간의 여유 공간을 확보할 수 있습니다. 하지만 근본적인 해결책은 아닙니다.
- 스왑 재설정 (일시적인 해결책)
swapoff -a && swapon -a
스왑을 재설정하여 스왑 공간을 초기화할 수 있습니다. 그러나 원인을 해결하지 않으면 다시 문제가 발생할 가능성이 높습니다.
- 메모리 증설 또는 스왑 공간 증가
물리적인 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
- 메모리 최적화 설정
sysctl
을 활용하여 스왑 사용 정책을 조정할 수 있습니다. 예를 들어, 아래 설정은 스왑을 덜 사용하도록 조정합니다.
sysctl -w vm.swappiness=10
echo "vm.swappiness=10" >> /etc/sysctl.conf
- 서비스 최적화 및 설정 변경
특정 애플리케이션이 과도한 메모리를 사용하는 경우 설정을 조정합니다. 예를 들어, PostgreSQL을 사용하는 경우 shared_buffers
, work_mem
등의 값을 조정할 수 있습니다.
결론
메모리와 스왑 사용률이 높으면 시스템이 매우 느려지거나 응답하지 않을 가능성이 큽니다. 즉시 대응할 방법(프로세스 종료, 캐시 정리, 스왑 재설정)과 장기적인 해결책(메모리 증설, 서비스 최적화)을 고려해야 합니다.
'Coding > Linux' 카테고리의 다른 글
[Linux] ll 명령어 완벽 가이드 (0) | 2025.02.17 |
---|---|
[Linux] 서버 캐시 정리 명령어 (0) | 2024.12.21 |
[Linux/Ubuntu 20.04 LTS] 부팅할 때 특정 파일을 실행 (0) | 2024.05.07 |
[Linux/Ubuntu 20.04 LTS] Wired Network 사라지는 경우 (0) | 2024.05.07 |