티스토리 뷰
서버 운영 중 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는 설치와 사용이 간단하면서도 다양한 부하 시나리오를 지원한다. 모니터링/알림/스케일링 검증이 필요할 때 적극 활용하자.
'기타' 카테고리의 다른 글
| Claude Code GitHub MCP 필요한가? (0) | 2026.02.10 |
|---|---|
| 클로드코드 잘 쓰기 - 책 사기전에 이거부터 읽어보자 (0) | 2026.02.09 |
| Codex 실행시 SyntaxError: Unexpected reserved word 에러 (0) | 2026.02.09 |
| Cursor, Claude Code, Codex 모두 이용중 (0) | 2026.02.08 |
| claude code linux os 에 설치 후 인식 안 될때 입력하는 명령어 (0) | 2026.02.06 |
- Total
- Today
- Yesterday
- 백트래킹
- 자료구조
- Lowest Common Ancestor
- FairMOT
- 백준
- 문제집
- 백준 11437
- 인공지능을 위한 선형대수
- 파이참
- 백준 1766
- 위상 정렬 알고리즘
- ㅂ
- 순열
- PyCharm
- LCA
- 단축키
- 이분탐색
- 가장 긴 증가하는 부분 수열
- 백준 11053
- 조합
- MOT
- cosine
- C++ Deploy
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |

