top과 htop으로 Linux 서버를 실시간 모니터링하고, Ubuntu 22.04/24.04에서 로드 평균, CPU, 메모리, 스왑, 디스크 I/O, 네트워크 지표를 읽는 방법을 다루는 실용적이고 명령어 단위의 가이드입니다.
소개
웹사이트가 느려지거나 애플리케이션에서 타임아웃이 발생하기 시작하면 가장 먼저 떠오르는 질문은 늘 같습니다. 지금 이 순간 서버가 실제로 무엇을 하고 있는가? Linux에서는 이 질문에 답하기 위해 무거운 모니터링 스택이 필요하지 않습니다. 기본 내장된(혹은 명령어 한 번으로 설치되는) 두 가지 도구인 top과 htop에 몇 가지 지표 명령어만 더하면 CPU, 메모리, 디스크, 네트워크 동작을 명확하게 실시간으로 파악할 수 있습니다.
이 튜토리얼은 Skyline Cloud VPS 또는 클라우드 서버에서 제공되는 것과 동일한 OS 이미지인 Ubuntu 22.04 또는 24.04 LTS에서 이러한 지표를 정확히 어떻게 읽는지 보여줍니다. 아래의 모든 명령어는 실제 운영 중인 Ubuntu 호스트에서 검증되었습니다.
사전 준비 사항
- Ubuntu 22.04/24.04(또는 유사한 배포판)를 실행하는 Linux 서버.
sudo를 실행할 수 있는 사용자로의 SSH 접근.
1단계 — top으로 시스템을 한눈에 파악하기
top은 모든 Linux 배포판에 기본 포함되어 있으므로 여기서 시작하세요. 다음과 같이 실행합니다:
top
가장 유용한 부분은 헤더입니다:
top - 21:50:56 up 72 days, 20:54, 3 users, load average: 1.67, 1.18, 0.76
Tasks: 20 total, 1 running, 19 sleeping, 0 stopped, 0 zombie
%Cpu(s): 29.0 us, 6.5 sy, 0.0 ni, 62.9 id, 0.0 wa, 0.0 hi, 1.6 si, 0.0 st
MiB Mem : 7937.4 total, 402.8 free, 5393.0 used, 2141.6 buff/cache
MiB Swap: 969.0 total, 7.7 free, 961.3 used. 2107.8 avail Mem
각 줄이 알려주는 내용:
- load average — 최근 1분, 5분, 15분에 대한 세 개의 수치입니다. 이를 CPU 개수와 비교하세요(
nproc실행). 4코어 서버에서 로드4.0은 완전히 바쁜 상태를 의미하며, 코어 수를 크게 웃도는 값이 지속되면 시스템이 과부하 상태임을 뜻합니다. - %Cpu(s) — CPU 시간의 분류입니다. 가장 중요한 항목은
us(사용자 프로세스),sy(커널/시스템),id(유휴),wa(디스크 I/O 대기)입니다. 높은wa는 CPU가 아니라 느린 디스크를 가리킵니다. VPS에서st(steal)가 0보다 크면 시끄러운 이웃(noisy neighbour)이 여러분의 CPU 사이클을 가져가고 있다는 의미입니다. - Mem / Swap — total, free, used, 그리고
buff/cache입니다. 주시해야 할 수치는free가 아니라 **avail Mem**입니다. Linux는 의도적으로 여분의 RAM을 캐시로 사용하므로, 낮은 "free" 값은 정상이며 건강한 상태입니다.
top 실행 중 유용한 키: M을 누르면 메모리 기준 정렬, P는 CPU 기준 정렬, 1은 각 코어를 개별 표시, k는 PID로 프로세스 종료(kill), q는 종료입니다.
2단계 — 더 보기 편한 htop 설치 및 사용하기
htop은 대화형이며 색상으로 구분되는 프로세스 뷰어로, top보다 훨씬 읽기 쉽습니다. 설치 방법:
sudo apt update
sudo apt install -y htop
그런 다음 실행합니다:
htop
상단에는 코어별 CPU 막대, 메모리 막대, 스왑 막대가 표시됩니다. 색상은 사용 유형을 나타냅니다. CPU 막대의 경우 파란색은 낮은 우선순위, 녹색은 사용자, 빨간색은 커널/시스템 시간입니다. 그 아래에는 스크롤 가능한 프로세스 목록이 있습니다.
top 대비 주요 장점:
- 화살표 키로 스크롤할 수 있어 모든 것을 한 화면에 맞출 필요가 없습니다.
F6을 누르면 정렬 기준 열을 변경하고,F4로 프로세스 이름으로 필터링할 수 있습니다.F5를 누르면 부모/자식 프로세스 관계를 보여주는 트리 뷰가 나타납니다.F9를 누르면 강조된 프로세스에 시그널(kill)을 보낼 수 있습니다. PID를 입력할 필요가 없습니다.
더 오래 지속되는 점검에는, 문제를 재현하는 동안 하나의 SSH 창에서 계속 열어두는 도구로 보통 htop이 적합합니다.
3단계 — free로 메모리와 스왑을 정확히 확인하기
top은 메모리를 실시간으로 보여주고, free는 깔끔한 스냅샷을 제공합니다:
free -h
total used free shared buff/cache available
Mem: 7.8Gi 5.3Gi 417Mi 129Mi 2.1Gi 2.1Gi
Swap: 968Mi 961Mi 7.0Mi
실제 메모리 압박을 판단하려면 available 열을 읽으세요. 이는 스왑 없이 새 프로그램에 회수할 수 있는 RAM이 얼마나 되는지를 추정한 값입니다. available이 0에 가까우면서 동시에 스왑이 과도하게 사용되고 있다면, 서버의 메모리가 부족한 상태이므로 용량을 키우거나 메모리 누수를 조사해야 합니다. 가벼운 스왑 사용 자체는 경보 신호가 아닙니다.
4단계 — uptime과 vmstat으로 로드와 실행 대기열 이해하기
top을 열지 않고 한 줄로 로드 값을 확인하려면:
uptime
시간에 따라 무엇이 로드를 유발하는지 보려면, vmstat은 지정한 간격으로 시스템을 샘플링합니다(여기서는 1초마다 5회):
vmstat 1 5
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 984328 412820 232880 1960148 0 1 389 74 0 1 11 2 86 0 1
가장 왼쪽의 두 열이 핵심입니다. **r**은 CPU를 기다리는 프로세스 수이고, **b**는 I/O로 인해 차단된 프로세스 수입니다. r이 지속적으로 코어 수를 초과하면 CPU 병목 상태이며, b가 계속 높으면 디스크 또는 네트워크 I/O가 병목입니다. si/so 열은 swap-in/swap-out을 나타내며, 여기서 0보다 큰 값은 활발한 스와핑이 일어나고 있다는 뜻으로 성능을 저하시킵니다.
5단계 — iostat으로 디스크 I/O 관찰하기
iostat은 sysstat 패키지의 일부입니다:
sudo apt install -y sysstat
iostat -xz 2 3
이 명령은 2초마다 세 번, 장치별 확장 통계를 보고합니다. 다음 항목에 집중하세요:
%util— 장치가 얼마나 바쁜지를 나타냅니다. 100%에 가까운 값은 디스크가 포화 상태임을 의미합니다.await— 대기열 시간을 포함한 I/O 요청당 평균 시간(ms)입니다.await가 상승하면 디스크가 어려움을 겪고 있다는 신호입니다.r/s와w/s— 초당 읽기 및 쓰기 수입니다.
top에서 높은 wa를 본 적이 있다면, 바로 여기서 디스크가 원인인지 확인할 수 있습니다.
6단계 — ss로 네트워크 연결 점검하기
ss는 netstat을 대체하는 현대적인 도구입니다. 소켓 요약을 빠르게 보려면:
ss -s
수신 대기 중인 TCP 포트와 각 포트 뒤의 프로세스를 나열하려면:
sudo ss -tlnp
특정 포트에 대한 established 연결이 갑자기 급증하면서 htop에서 CPU가 높게 나타난다면, 트래픽 급증이나 악의적인 클라이언트를 가리키는 경우가 많습니다.
빠른 지표 참조표
| 지표 | 명령어 | 정상 신호 | 경고 신호 |
|---|---|---|---|
| 로드 평균 | uptime, top |
코어 수 이하 | 코어 수를 지속적으로 초과 |
| CPU | top, htop |
높은 id, 낮은 wa/st |
높은 wa(디스크) 또는 st(VPS 경합) |
| 메모리 | free -h |
여유로운 available |
available ~0 + 과도한 스왑 |
| 실행 대기열 | vmstat 1 5 |
낮은 r과 b |
높은 r(CPU) 또는 b(I/O) |
| 디스크 I/O | iostat -xz 2 3 |
낮은 %util, 낮은 await |
%util 100% 근접, await 상승 |
| 네트워크 | ss -s, ss -tlnp |
안정적인 연결 수 | 갑작스러운 연결 급증 |
결론
top, htop, free, vmstat, iostat, ss만 있으면, 본격적인 모니터링 플랫폼을 설치하지 않고도 거의 모든 "서버가 느린 것 같다"는 보고를 진단할 수 있습니다. 실시간 상황은 htop으로 시작하고, free -h로 메모리를 확인하며, 높은 I/O 대기가 보일 때는 iostat으로 디스크를 깊이 파고드세요.
이러한 도구는 제대로 프로비저닝된 서버에서 진가를 발휘합니다. Skyline Cloud VPS 또는 클라우드 서버에서는 Ubuntu 22.04/24.04 LTS 이미지, PDPL, NCA, SDAIA 요구사항에 부합하는 왕국 내(in-Kingdom) 데이터 레지던시, 그리고 현지 아랍어 지원을 제공받을 수 있습니다. 사우디아라비아의 클라우드 호스팅 전체 라인업을 살펴보고, 동일한 인프라에서 메일을 운영한다면 비즈니스 이메일 호스팅 제공 항목도 확인해 보세요.
왕국 안에 머무르는 인프라에서 이 모니터링 기술을 실제로 활용할 준비가 되셨나요? Skyline Cloud 계정을 만들고 몇 분 안에 서버를 시작하세요.
Comments
0 total · 0 threads