Linux 서버 안정성 검증을 위한 stress 도구 사용 가이드

stress는 Linux 환경에서 시스템 자원(CPU, 메모리, 디스크 I/O 등)에 부하를 가해 서버의 안정성을 평가하는 오픈소스 유틸리티이다. 이 도구는 고부하 상황에서 애플리케이션이나 서비스가 정상적으로 동작하는지를 검증하는 데 유용하다.

1. 설치 방법

소스 코드 기반 설치

wget https://fossies.org/linux/privat/stress-1.0.4.tar.gz
tar -zxvf stress-1.0.4.tar.gz
cd stress-1.0.4/
./configure
make
sudo make install
stress --version  # 설치 확인

패키지 매니저를 통한 설치 (Ubuntu/Debian 기준)

sudo apt update
sudo apt install stress

2. 주요 옵션 설명

  • -c N: sqrt() 연산을 수행하는 CPU 부하 프로세스 N개 생성
  • --vm N: malloc() 기반 메모리 할당 프로세스 N개 생성
  • --vm-bytes B: 각 메모리 프로세스가 할당할 메모리 크기 지정 (예: 500M)
  • --vm-keep: 할당된 메모리를 해제하지 않고 유지
  • --vm-hang S: 메모리 할당 후 S초 동안 대기 후 해제하고 반복
  • -i N: sync() 호출을 반복하는 I/O 부하 프로세스 N개 생성
  • -d N: write() 연산을 수행하는 디스크 쓰기 프로세스 N개 생성
  • --hdd-bytes B: 각 디스크 프로세스가 생성할 파일 크기 지정
  • --timeout T: 부하 테스트를 T초 동안만 실행

3. 활용 예시

CPU 부하 테스트

현재 시스템의 CPU 코어 수만큼 부하 프로세스를 생성하여 최대 부하 상태를 시뮬레이션한다.

stress -c 4

메모리 부하 테스트

두 개의 프로세스가 각각 500MB 메모리를 할당하고 해제하지 않도록 유지한다.

stress --vm 2 --vm-bytes 500M --vm-keep

또는 메모리를 할당한 후 5초간 대기했다가 해제하고 이를 반복하는 방식으로 부하를 가한다.

stress --vm 2 --vm-bytes 500M --vm-hang 5

디스크 I/O 및 공간 부하 테스트

두 개의 프로세스가 500MB 크기의 임시 파일을 생성하고, 두 개의 sync 프로세스가 버퍼를 디스크에 강제 기록한다. 전체 테스트는 5초 동안만 실행된다.

stress -i 2 -d 2 --hdd-bytes 500M --timeout 5

4. 실제 테스트 전략

애플리케이션이나 웹 서비스의 안정성은 이상적인 환경보다는 자원 경합이 발생하는 현실적인 조건에서 더 중요한 의미를 갖는다. 단일 서비스만 실행되는 환경은 실제 운영 환경과 거리가 멀다. 따라서 stress와 같은 도구를 활용해 CPU, 메모리, 디스크 I/O 등 시스템 자원에 인위적인 부하를 가함으로써, 대상 서비스가 자원 제약이나 외부 간섭 속에서도 안정적으로 동작하는지를 검증해야 한다. 이러한 접근은 사용자 현장 환경을 보다 정확하게 모사하며, 신뢰성 있는 테스트 결과를 도출하는 데 기여한다.

태그: linux stress system-testing Performance-Testing server-stability

9월 6일 04:52에 게시됨