티스토리 뷰

서버 운영 중 CPU 부하 상황에서의 동작을 검증해야 할 때가 있다. 모니터링 알림 테스트, 오토스케일링 트리거 확인, 고부하 환경에서의 애플리케이션 안정성 검증 등이 대표적인 사례다. 이 글에서는 stress-ng를 이용해 간편하게 CPU 부하를 생성하는 방법을 정리한다.


1. stress-ng란?

stress-ng는 Linux 시스템에 다양한 종류의 부하(CPU, 메모리, I/O, 네트워크 등)를 인위적으로 발생시키는 도구다. 기존 stress 도구의 확장 버전으로, 더 다양한 부하 시나리오와 세밀한 제어를 지원한다.


2. 설치

RHEL / CentOS / Rocky Linux

yum install -y epel-release
yum install -y stress-ng

Ubuntu / Debian

apt update
apt install -y stress-ng

설치 확인

stress-ng --version

3. 기본 사용법

모든 CPU 코어를 60초간 100% 부하

stress-ng --cpu $(nproc) --timeout 60s
옵션 설명
--cpu $(nproc) 시스템의 전체 CPU 코어 수만큼 워커 프로세스를 생성한다
--timeout 60s 60초 후 자동 종료한다

nproc 명령어는 현재 시스템의 사용 가능한 CPU 코어 수를 반환한다. 예를 들어 8코어 서버라면 8개의 워커가 생성되어 모든 코어에 부하가 걸린다.

특정 코어 수만 부하

# CPU 4코어만 부하
stress-ng --cpu 4 --timeout 60s

부하 비율 지정

# 모든 코어를 50%만 사용
stress-ng --cpu $(nproc) --cpu-load 50 --timeout 60s

# 모든 코어를 80%만 사용
stress-ng --cpu $(nproc) --cpu-load 80 --timeout 60s

--cpu-load 옵션을 활용하면 100%가 아닌 원하는 비율로 부하를 조절할 수 있다.


4. timeout 옵션 정리

옵션 의미
--timeout 30s 30초
--timeout 5m 5분
--timeout 1h 1시간
--timeout 0 무제한 (수동으로 Ctrl+C 또는 kill로 종료)

5. 부하 모니터링

부하를 걸어놓고 별도 터미널에서 실시간 모니터링을 하면 효과를 확인할 수 있다.

htop

htop

CPU 코어별 사용률을 시각적으로 확인할 수 있다.

mpstat (sysstat 패키지)

# 1초 간격으로 CPU 사용률 출력
mpstat -P ALL 1

top

top -d 1

6. stress-ng 없이 부하 거는 방법 (순수 bash)

도구 설치가 어려운 환경에서는 bash만으로도 CPU 부하를 생성할 수 있다.

코어 1개 부하

yes > /dev/null &

코어 4개 부하

for i in {1..4}; do yes > /dev/null & done

종료

# 특정 작업 종료
kill %1

# yes 프로세스 전체 종료
killall yes

주의: yes 방식은 세밀한 부하 조절이 불가능하다. 테스트 후 반드시 프로세스를 종료해야 한다.


7. 실전 활용 시나리오

모니터링 알림 테스트

CPU 사용률이 90%를 넘으면 알림이 오는지 확인할 때:

stress-ng --cpu $(nproc) --cpu-load 95 --timeout 5m

오토스케일링 트리거 테스트

클라우드 환경에서 CPU 기반 오토스케일링 정책이 정상 동작하는지 확인할 때:

stress-ng --cpu $(nproc) --timeout 10m

애플리케이션 안정성 테스트

고부하 상황에서 서비스가 정상 응답하는지 확인할 때:

# 백그라운드로 부하 실행
stress-ng --cpu $(nproc) --cpu-load 80 --timeout 5m &

# 이후 애플리케이션 동작 확인
curl -o /dev/null -s -w "%{http_code} %{time_total}s\n" http://localhost:8080/health

8. 주의사항

  • 운영 서버에서는 신중하게 사용할 것. CPU 부하로 인해 서비스 응답이 지연될 수 있다.
  • timeout을 반드시 설정할 것. 무제한 실행 후 종료를 잊으면 장애로 이어질 수 있다.
  • 부하 테스트 전 팀에 사전 공유할 것. 예고 없는 부하는 불필요한 장애 대응을 유발한다.

요약

# 전체 코어 100% 부하 (60초)
stress-ng --cpu $(nproc) --timeout 60s

# 전체 코어 50% 부하 (5분)
stress-ng --cpu $(nproc) --cpu-load 50 --timeout 5m

# 코어 4개만 100% 부하 (30초)
stress-ng --cpu 4 --timeout 30s

stress-ng는 설치와 사용이 간단하면서도 다양한 부하 시나리오를 지원한다. 모니터링/알림/스케일링 검증이 필요할 때 적극 활용하자.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함