서버가 갑자기 느려진것 같다면 서버에 있는 메모리 상황을 점검해봐야 합니다.
리눅스 서버 메모리 상태 확인하기
서버를 운영하다 보면 CPU나 메모리를 얼마나 사용하고 있는지 확인해야 할 때가 있습니다.
특히 우분투 서버에서 Docker, Flask, Nginx 같은 서비스를 여러 개 실행하고 있다면 현재 시스템에 여유가 있는지 확인하는 것이 중요합니다.
이번 글에서는 별도의 모니터링 프로그램을 설치하지 않고 리눅스 기본 명령어로 CPU와 메모리 사용량을 확인하는 방법을 정리해 보겠습니다.
1. 서버 전체 메모리 확인하기
가장 먼저 확인하기 좋은 명령어는 free입니다.
free
조금 더 보기 편하게 확인하려면 다음과 같이 입력합니다.

free -h
예를 들어 다음과 같은 결과가 나올 수 있습니다.
total used free shared buff/cache available
Mem: 958MiB 770MiB 67MiB 4MiB 291MiB 187MiB
Swap: 2.0GiB 2.0GiB 36MiB
여기서 주요 항목은 다음과 같습니다.
- total : 전체 메모리
- used : 현재 사용 중인 메모리
- free : 사용되지 않고 있는 메모리
- buff/cache : 시스템 캐시 등에 사용되는 메모리
- available : 실제로 새 프로그램이 사용할 수 있는 메모리
- Swap : RAM이 부족할 때 디스크 일부를 메모리처럼 사용하는 영역
특히 리눅스에서는 free만 보고 메모리가 부족하다고 판단하기보다는 available 값을 함께 확인하는 것이 좋습니다.
2. CPU와 메모리를 실시간으로 확인하기
현재 어떤 프로그램이 CPU와 메모리를 많이 사용하는지 확인하려면 top 명령어를 사용할 수 있습니다.
top
실행하면 CPU 사용량과 메모리 사용량뿐 아니라 현재 실행 중인 프로세스도 실시간으로 확인할 수 있습니다.
화면을 보면 각 프로세스별로 CPU와 메모리 사용률을 확인할 수 있습니다.
종료하려면:
q
를 누르면 됩니다.
3. 메모리를 많이 사용하는 프로그램 찾기
특정 프로그램이 메모리를 많이 사용하고 있는지 확인하고 싶다면 다음 명령어가 편리합니다.
ps aux --sort=-%mem | head -15
메모리 사용량이 높은 프로세스부터 정렬해서 상위 15개를 보여줍니다.

USER PID %CPU %MEM VSZ RSS COMMAND
ubuntu 13908 27.2 21.0 2606208 206692 ./NeverIdle
root 10987 0.0 3.3 2426792 32572 /usr/bin/dockerd
이렇게 확인하면 어떤 프로그램이 서버 메모리를 많이 사용하고 있는지 쉽게 찾을 수 있습니다.
여기서 %MEM은 전체 RAM에서 해당 프로세스가 차지하는 비율이고, RSS는 실제 RAM에 올라와 있는 메모리 크기를 확인할 때 참고할 수 있습니다.
4. CPU를 많이 사용하는 프로그램 확인하기
CPU 사용량을 기준으로 정렬하려면 다음 명령어를 사용하면 됩니다.
ps aux --sort=-%cpu | head -15
CPU 사용량이 높은 프로세스부터 확인할 수 있습니다.
서버에서 특정 프로그램이 갑자기 CPU를 많이 사용한다면 이 명령어로 원인을 찾는 데 도움이 됩니다.
5. Docker 컨테이너별 CPU·메모리 확인하기
Docker를 사용하는 서버라면 컨테이너별 사용량도 따로 확인할 수 있습니다.
sudo docker stats
실시간으로 다음과 같은 정보를 확인할 수 있습니다.

CONTAINER ID NAME CPU % MEM USAGE / LIMIT
c500eec95c76 flask_app 0.02% 5.93MiB / 957MiB
ab51e697707b nginx 0.00% 716KiB / 957MiB
여기서 MEM USAGE / LIMIT을 보면 각 Docker 컨테이너가 현재 얼마나 많은 메모리를 사용하고 있는지 알 수 있습니다.
한 번만 확인하고 끝내려면 다음 명령어를 사용하면 됩니다.
sudo docker stats --no-stream
서버 상태를 간단하게 확인할 때는 이 방법이 특히 편합니다.
6. Swap 사용량도 확인해야 하는 이유
RAM이 부족하면 리눅스는 일부 메모리 데이터를 Swap 영역으로 이동할 수 있습니다.
따라서 서버 상태를 확인할 때는 RAM뿐 아니라 Swap도 함께 확인하는 것이 좋습니다.
free -h
결과에서:
Swap: 2.0GiB 1.96GiB 36MiB
처럼 Swap 사용량이 지나치게 높다면 현재 메모리 상황을 조금 더 자세히 살펴볼 필요가 있습니다.
다만 Swap이 많이 사용되고 있다고 해서 무조건 현재 메모리가 부족하다는 의미는 아닙니다.
과거에 메모리 부족이 발생하면서 Swap으로 이동한 데이터가 그대로 남아 있을 수도 있기 때문입니다.
서버 상태를 빠르게 확인하는 방법
서버에 접속한 뒤 다음 세 가지 명령어만 기억해도 기본적인 리소스 확인이 가능합니다.
free -h
→ 전체 메모리와 Swap 확인
top
→ CPU·메모리 및 프로세스 실시간 확인
sudo docker stats --no-stream
→ Docker 컨테이너별 CPU·메모리 확인
여기에 메모리를 많이 사용하는 프로세스를 찾고 싶다면:
ps aux --sort=-%mem | head -15
를 추가로 사용하면 됩니다.
마무리
서버를 운영할 때는 단순히 서비스가 정상적으로 실행되고 있는지만 확인하는 것보다 CPU와 메모리에 여유가 있는지도 함께 확인하는 것이 중요합니다.
우분투 서버라면 free, top, ps 같은 기본 명령어만으로도 현재 리소스 상태를 상당 부분 확인할 수 있고, Docker를 사용한다면 docker stats를 이용해 컨테이너별 사용량까지 확인할 수 있습니다.
특히 메모리가 작은 서버에서는 특정 프로세스 하나가 상당한 메모리를 차지할 수 있기 때문에 ps aux --sort=-%mem으로 메모리 사용량이 높은 프로세스를 확인하는 습관을 들여두면 서버 관리에 도움이 됩니다.
'Programming > Python' 카테고리의 다른 글
| Django 프로젝트 백업하기 (1) | 2026.07.04 |
|---|---|
| 파이썬 이미지 인식 연습 (0) | 2026.01.01 |
| 빅데이터 분석기사 실기 3유형 (0) | 2025.06.11 |
| 빅데이터 분석기사 예제문제 2유형 (0) | 2025.06.11 |
| 빅데이터 분석기사 6월 실기 1유형 (0) | 2025.06.11 |