리눅스 성능 진단의 맥박, vmstat 명령어 마스터하기
서버가 갑자기 느려졌을 때, 단순하게 메모리 용량만 확인하는 것으로는 부족합니다. "CPU가 계산하느라 바쁜가? 아니면 디스크에서 데이터를 읽어오느라 대기 중인가?" 이 질문에 답을 주는 명령어가 바로 vmstat입니다.
vmstat는 프로세스, 메모리, 페이징, 차단된 I/O, CPU 활동 등에 대한 요약 정보를 보고합니다. 시스템의 병목 구간(Bottleneck)을 찾아내고 전체적인 밸런스를 점검하는 데 최적화된 도구입니다.
1. vmstat 실행 방법과 주기적 모니터링
가장 기본은 vmstat [간격] [횟수] 형식으로 사용하는 것입니다. 일시적인 수치보다는 지속적인 변화 추이를 관찰하는 것이 장애 대응의 핵심입니다.
$ vmstat 2 5
// 2초 간격으로 5번 정보를 갱신하여 출력합니다.
2. vmstat 출력 항목의 핵심 의미
명령어를 입력하면 나타나는 여러 열(Column) 중에서 우리가 특히 주의 깊게 봐야 할 핵심 데이터를 정리했습니다.
| 섹션 | 항목 | 설명 및 위험 신호 |
|---|---|---|
| Procs (프로세스) | r (run) | 실행 대기 중인 프로세스 수. CPU 코어 수보다 높으면 CPU 병목 의심. |
| b (block) | I/O 대기로 인해 중단된 프로세스 수. 디스크 속도 문제를 시사함. | |
| Swap (스왑) | si / so | 스왑 인/아웃 속도. 이 수치가 0보다 크면 메모리가 매우 부족한 상태. |
| ※ si(Swap-in): 디스크 → 메모리 / so(Swap-out): 메모리 → 디스크 | ||
| CPU (중앙처리장치) | id (idle) | CPU가 쉬고 있는 비율. 0에 가까울수록 CPU 부하가 한계치임. |
| wa (wait) | I/O 응답을 기다리는 비율. 높은 wa값은 디스크 성능 문제를 의미. | |
3. 시스템 장애 판단을 위한 3단계 체크리스트
단순히 명령어를 치는 것을 넘어, 전문가처럼 LSI 키워드(성능 분석, 병목 현상, 리소스 최적화)를 바탕으로 데이터를 해석해 보세요.
- 단계 1 (CPU 부하):
r항목이 지속적으로 높고id가 낮다면 CPU 처리 능력을 초과한 것입니다. - 단계 2 (메모리 스왑):
si혹은so수치가 지속적으로 발생한다면, RAM 부족으로 인해 느린 디스크를 메모리처럼 쓰느라 시스템이 느려진 상태(Thrashing)입니다. - 단계 3 (I/O 병목):
b수치가 높고wa가 10% 이상 유지된다면 디스크 입출력 성능을 점검하거나 SSD 도입을 고려해야 합니다.
결론: vmstat은 서버의 종합 검진 결과표입니다
free가 메모리라는 특정 부위의 정밀 검사라면, vmstat는 전체적인 신체 컨디션을 보여주는 종합 검진표와 같습니다. 평소 정상적인 상태의 수치를 기록(Baselines)해 두면, 문제가 생겼을 때 어떤 지표가 비정상인지 즉각 파악할 수 있습니다.
🚀 실무 적용 팁
서버 부하가 의심될 때 vmstat 1 10 명령을 실행해 보세요. 1초 간격의 10개 데이터를 통해 시스템이 현재 '계산'에 집중하고 있는지, '기다림(I/O)'에 지쳤는지 명확히 알 수 있습니다.
리눅스 서버 관리에 대해 더 궁금한 점이 있으신가요?
댓글로 질문을 남겨주시면 15년 차 전문가의 노하우를 공유해 드립니다!