본문 바로가기
카테고리 없음

[Linux] 서버 부하의 주범 확인하기: top, htop 명령어 완벽 분석

by 돌미나리는야생미나리 2026. 4. 7.

서버를 운영하다 보면 갑자기 웹사이트 응답이 느려지거나, 특정 프로세스가 CPU를 100% 점유하여 시스템이 멈추는 상황을 겪게 됩니다. 이때 가장 먼저 해야 할 일은 "지금 내 서버에서 무슨 일이 벌어지고 있는가?"를 파악하는 것입니다.

오늘은 리눅스 서버 모니터링의 핵심 도구인 top과 그 상위 호환 버전인 htop을 활용하여 시스템 부하의 원인을 진단하는 방법을 상세히 알아보겠습니다.


1. 리눅스 기본 모니터링: top 명령어

top은 모든 리눅스 배포판에 기본으로 내장된 실시간 프로세스 모니터링 도구입니다.

1.1 top 실행 및 화면 읽기

터미널에 top을 입력하면 상단에 시스템 전체 요약 정보가 나타납니다.

  • load average: 최근 1분, 5분, 15분 동안의 평균 작업 대기 수입니다. 코어 수보다 높다면 서버가 과부하 상태임을 의미합니다.
  • %CPU(s): us(사용자), sy(시스템), id(유휴) 등의 상태를 보여줍니다. id값이 낮을수록 서버가 바쁘게 돌아가고 있다는 뜻입니다.
  • KiB Mem: 전체 메모리 사용량과 여유 공간을 보여줍니다.

1.2 유용한 단축키

  • P: CPU 사용량이 높은 순으로 정렬
  • M: 메모리 사용량이 높은 순으로 정렬
  • k: 특정 프로세스 종료 (PID 입력 필요)
  • q: 프로그램 종료

2. 시각화된 강력한 도구: htop

top이 텍스트 위주라 가독성이 떨어진다면, **htop**은 컬러풀한 그래프와 직관적인 인터페이스를 제공하는 상위 호환 도구입니다.

2.1 htop 설치하기

대부분의 서버에는 기본 설치되어 있지 않으므로 별도로 설치해야 합니다.

Bash
 
sudo apt update
sudo apt install htop -y

2.2 htop의 장점

  • 직관적인 바(Bar) 그래프: 각 CPU 코어별 점유율과 메모리 사용량을 시각적으로 보여줍니다.
  • 마우스 지원: 터미널 환경에서도 마우스 클릭으로 프로세스를 선택하고 정렬할 수 있습니다.
  • 트리 보기 (F5): 프로세스 간의 부모-자식 관계를 한눈에 파악하여 어떤 서비스가 리소스를 잡아먹는지 쉽게 알 수 있습니다.

3. 서버 부하의 3대 원인 진단법

상태 창을 열었을 때, 무엇을 중점적으로 봐야 할까요?

3.1 CPU 사용량이 너무 높을 때 (High CPU)

특정 프로세스가 연산 처리를 과도하게 하고 있는 경우입니다. 보통 무한 루프에 빠진 스크립트나 복잡한 계산 작업이 원인입니다. htop에서 %CPU 열을 확인하여 해당 프로세스를 최적화하거나 종료해야 합니다.

3.2 메모리 스왑 발생 (High Memory & Swap)

물리 메모리(RAM)가 부족하여 디스크의 일부를 메모리처럼 사용하는 '스왑(Swap)' 현상이 발생하면 서버 속도가 급격히 저하됩니다. htop 상단의 Swp 게이지가 차오르고 있다면 메모리 증설이나 캐시 정리(예: Redis 데이터 정리)가 필요합니다.

3.3 I/O Wait (Wait 상태)

CPU 점유율은 낮은데 서버가 느리다면 디스크 읽기/쓰기 속도가 병목 현상을 일으키는 것입니다. top의 %wa 수치가 높다면 데이터베이스 쿼리 최적화나 디스크 성능 점검이 우선입니다.


4. 실무 꿀팁: 특정 사용자 프로세스만 보기

서버에 여러 사용자가 접속해 있다면, 내 계정이 실행한 프로세스만 필터링해서 보는 것이 효율적입니다.

Bash
 
# htop 실행 후 'u'를 누르거나 아래 명령어로 실행
htop -u [사용자이름]

# 예시
htop -u yumina

5. 결론: 상시 모니터링의 중요성

서버 장애는 예고 없이 찾아오지만, top과 htop을 활용하는 습관을 들이면 사고를 미연에 방지할 수 있습니다. 서버가 평소보다 조금이라도 무겁게 느껴진다면 바로 htop을 켜서 리소스 흐름을 체크해 보세요.