Research/Devops

[Review] 데브옵스 #2 왜 서버가 이렇게 느리지? CPU, RAM 그리고 디스크 I/O의 자원 고갈

JMcunst 2025. 6. 1. 20:24
728x90
반응형

왜 서버가 이렇게 느리지? CPU, RAM 그리고 디스크 I/O의 자원 고갈

"서버가 왜 이렇게 느리지?"라는 질문은 시스템 관리자라면 하루에도 몇 번씩 듣는 말이다.

서버 성능 저하의 원인은 다양하지만, 기본적으로 점검해야 할 세 가지는 CPU, 메모리(RAM), 그리고 디스크 I/O이다.

 

이 글에서는 데브옵스 책 2장을 읽고 실제 Linux 시스템에서 자원 고갈을 진단하고, 필요한 도구를 이용해 문제를 파악하는 방법을 정리한다.


1. 시스템 부하

$ uptime
 14:00:31 up 10 days,  2:34,  2 users,  load average: 2.15, 1.80, 1.75
  • load average: 1분, 5분, 15분 동안의 평균 부하
  • 부하 1.00은 논리 CPU 1개가 100% 점유된 상태를 의미

1.1. 평균 부하가 높다는 것은?

평균 부하가 높다고 해서 무조건 CPU 과부하는 아님. 아래 중 하나일 수 있다
유형 증상 확인 방법
CPU 부하 us(user time), sy(system time) 증가 top
메모리 부족 free 메모리 거의 없음, swap 사용 증가 top, vmstat, /var/log/syslog (OOM 로그)
디스크 I/O wa(I/O wait) 증가 iostat, iotop, top

2. top을 이용한 부하 문제 진단

기본적인 것은 top 출력 정보로 어떤 리소스(CPU, RAM, 디스크 I/O)가 고갈됐는지 파악하는 것

주요 항목 설명
%us 사용자 공간 CPU 사용량
%sy 커널 공간 CPU 사용량
%wa I/O 대기 시간
%id 유휴 시간
KiB Swap 스왑 사용량

스냅샷 통해 출력 결과 확인하기

$ top -b -n 1 > top_output
$ top -b -n 1 | tee top_output

2.1. 높은 사용자 시간(High User Time) 진단하기

  • CPU에 부담을 주는 프로세스 확인
  • top에서 %CPU 상위 프로세스 추적
  • 필요 시 pidstat, perf top으로 세부 분석

2.2. 메모리 고갈 문제 진단하기

  • top에서 free, available, swap 확인
  • swap 사용이 많다면 RAM 부족 가능성
  • /var/log/syslogOOM Killer 기록이 있는지 확인
$ dmesg | grep -i 'oom'

2.3. 높은 입출력 대기 문제 진단하기

  • wa 값이 20~30% 이상이면 디스크 병목 가능성
$ iostat -x 1 3    # sysstat 필요
$ iotop -o         # 실시간 I/O를 많이 쓰는 프로세스 확인

3. 현상 확인 후 과부하 문제 해결하기

3.1. sysstat 설정하기

$ sudo apt install sysstat
$ sudo vim /etc/default/sysstat
ENABLED="true"
$ sudo systemctl enable sysstat
$ sudo systemctl restart sysstat

3.2. 통계 정보 보기

목적 명령어
CPU 사용률 sar -u 1 3
메모리 사용률 sar -r 1 3
디스크 I/O sar -b 1 3

3.3. 과거의 통계 정보 보기

$ sar -s 10:00 -e 11:00     # 시간대 지정
$ sar -f /var/log/sysstat/sa21   # 특정 날짜 파일

정리

서버가 느릴 때 “그냥 느려졌네”라고 넘기는 것이 아니라, 이유를 찾고 근거를 남기는 것이 프로다운 문제 해결이다.

 

CPU, RAM, 디스크 I/O는 세 가지 축이다.

이 세 축을 감시하고 정리하는 습관이 있다면, 서버는 느려져도 대응은 더 빠르고 정확해질 수 있다.

728x90
반응형