리눅스 서버 부하 분석하기: top부터 stress-ng까지
서버 관리자에게 있어 시스템의 현재 상태를 정확히 파악하고 잠재적인 문제를 미리 발견하는 것은 매우 중요합니다. 리눅스는 이를 위한 다양한 모니터링 도구들을 제공합니다.
기본적인 모니터링 도구
top 명령어
가장 기본적이고 필수적인 모니터링 도구입니다.
top
# 결과 예시
top - 14:23:36 up 15 days, 3:42, 1 user, load average: 0.52, 0.58, 0.59
Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.9 us, 2.0 sy, 0.0 ni, 91.7 id, 0.3 wa, 0.0 hi, 0.1 si
MiB Mem : 15892.0 total, 8012.3 free, 4120.5 used, 3759.2 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 11234.4 avail Mem
vmstat
가상 메모리 통계를 보여주는 도구입니다.
vmstat 1
# 1초 간격으로 업데이트
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 821524 97260 858932 0 0 0 1 1 2 0 0 100 0 0
iostat
CPU 사용량과 디스크 I/O 통계를 보여줍니다.
iostat -x 1
# 확장 정보를 1초 간격으로 표시
고급 모니터링 도구
sar (System Activity Reporter)
시스템 활동을 자세히 기록하고 분석합니다.
# CPU 사용량을 1초 간격으로 5회 측정
sar -u 1 5
# 메모리 사용량 확인
sar -r
# 디스크 I/O 모니터링
sar -b
stress-ng를 이용한 부하 테스트
시스템의 한계를 테스트하기 위한 도구입니다.
# CPU에 부하 주기
stress-ng --cpu 4 --timeout 60s
# 메모리에 부하 주기
stress-ng --vm 2 --vm-bytes 1G --timeout 60s
# I/O에 부하 주기
stress-ng --io 4 --timeout 60s
주요 모니터링 지표
로드 애버리지 (Load Average)
시스템의 부하를 나타내는 세 개의 숫자 (1분, 5분, 15분 평균)
- 1.0 이하: 여유 있는 상태
- 1.0~5.0: 주의가 필요한 상태
- 5.0 이상: 과부하 상태
CPU 사용률
- us (user): 일반 프로세스의 사용률
- sy (system): 커널의 사용률
- id (idle): 유휴 상태
- wa (iowait): I/O 대기
메모리 사용량
- used: 실제 사용 중인 메모리
- free: 사용 가능한 메모리
- buff/cache: 버퍼와 캐시로 사용 중인 메모리
- available: 실제로 사용 가능한 메모리
서버 모니터링은 지속적으로 수행해야 하는 작업입니다. 각 도구들이 보여주는 지표들을 이해하고, 정상 범위를 파악하여 이상 징후를 조기에 발견하는 것이 중요합니다.
댓글남기기