본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
강의 요약
오늘 강의에서는 성능 테스트 도구인 JMeter를 이용해서 spring mvc와 webflux 서버의 성능비교를 진행했다. JMeter는 성능 테스트 실행 후 다양한 방식으로 결과를 분석할 수 있으며, 리스너와 대시보드를 통해 응답 시간, 처리량, 에러율 등의 메트릭을 확인할 수 있다.
JMeter 결과 분석 전략
성능 테스트 결과는 두 가지 출처에서 수집할 수 있다.
서비스 측면
- JVM 메모리 사용량
- 활성 스레드 수
- DB 트랜잭션 실행 시간
- 다운스트림 API 응답 시간
클라이언트 측면 (JMeter)
- 전체 응답 시간
- 실패한 요청 비율
- 초당 요청 수 (TPS)
- 처리량 (Throughput)
JMeter 결과 분석 방법 비교
JMeter는 클라이언트 관점의 메트릭을 수집하며, 이를 분석하는 방법은 크게 세 가지로 구분된다. 각 방법은 상황에 따라 적합한 선택이 다르며, 복잡도와 요구사항을 고려하여 결정해야 한다.
- JMeter 리포트 (HTML Dashboard 도구 포함)
- 플러그인
- 호스팅 결과 서비스
호스팅 결과 서비스
JMeter는 GraphiteBackendListenerClient와 InfluxDBBackendListenerClient를 제공하여 외부 백엔드로 메트릭을 전송할 수 있다. 이를 통해 결과를 실시간으로 외부 DB에 저장하고, BlazeMeter Sense, Grafana, Taurus 같은 서비스로 대시보드를 생성할 수 있다.
장점
- 테스트 실행 이력 보관 및 비교 가능
- 여러 버전, 여러 시점의 테스트 결과 비교
- 실시간 모니터링
단점
- 복잡도, 위험성, 비용 증가
- 무료 클라우드 서비스는 지속성 보장 불가 (BlazeMeter Sense가 유료 전환)
- 자체 호스팅 시 DB, Grafana 등 여러 컴포넌트 설치 및 관리 필요
JMeter 플러그인
JMeter 커뮤니티에서 제공하는 다양한 플러그인을 통해 결과를 분석할 수 있다.
- JMeterPluginsCMD: JTL 파일에서 그래프 생성하는 커맨드라인 유틸리티
- Graphs Generator Listener: 테스트 종료 시 다양한 그래프 자동 생성 (Active Threads Over Time, Response Times Over Time, TPS 등)
- JWeter: 결과 파일 분석 및 시각화 도구
- JMeter Result Analysis Plugin: Maven 플러그인으로 결과 XML 파싱 및 차트 생성
- UbikLoadPack: 브라우저에서 CLI 테스트 모니터링 가능
JMeter Report Listeners
테스트 실행 중 데이터를 수집하고 다양한 형식으로 표시하는 리스너를 제공한다. 리스너는 샘플러, 스레드 그룹, 테스트 플랜 단위로 범위를 설정할 수 있다.
View Results 계열
- View Results Tree: 모든 요청을 리스트로 표시
- View Results in Table: 테이블 형태로 표시, 컬럼별 정렬 가능
- 개별 요청 디버깅에 적합하나 부하 테스트 시 메모리 사용량 주의
Aggregate 계열
- Aggregate Report: Average, Median, 90/95/99% Line, Error %, Throughput 등 통계 테이블
- Aggregate Graph: 통계 데이터를 그래프로 표시
- 기본 그래프는 시각화 품질이 제한적
Response Time Graph
- 응답 시간의 시간대별 변화 추적
- Interval 설정으로 그래프 세밀도 조절 (50ms, 1초, 5초 등)
Graph Results
- Average, Median, Deviation, Throughput를 시간에 따라 표시
JMeter Dashboard Report GUI
JMeter 기본 그래프는 시각화 품질이 제한적이기 때문에, 더 나은 시각화를 위해 HTML 대시보드 GUI를 제공한다. 기본적으로 생성되지 않으므로 별도 절차가 필요하다. 테스트 완료 후에만 생성 가능하다는 제약이 있다.
생성 절차
- Simple Data Writer 리스너를 추가하여 결과를 파일로 저장
- Properties 파일 생성 (timestamp_format, threads 등 설정)
- Tools 메뉴에서 'Generate HTML Report' 선택
- JTL 파일, properties 파일, 출력 폴더 지정
- 생성된 index.html을 브라우저에서 확인
구성 요소
- Summary Page: Request Summary 파이 차트, Application Performance Index 테이블, 통계 테이블
- Over Time Charts: Active Threads, Response Times, Latencies, Bytes Throughput
- Throughput Charts: TPS, Time vs Threads, Transaction Throughput vs Threads
- Response Times Charts: Distribution, Percentiles
참고 출처



