Blog

[Spring][258] 05 부하테스트? JMeter란? 우선 설치와 첫 사용해보기부터

Author
Summary
TEAM 258
Category
Project
Tags
Project
Favorite
Memory Date
2023/10/09
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
6 more properties
부하테스트란?
성능 테스트의 한 종류로, 임계값 한계에 도달할 때까지 시스템의 부하를 지속적으로 꾸준히 증가시켜 시스템을 테스트하는 방법
가상의 여러 유저를 생성(Thread)해서 한 API를 100번, 1000번 요청해보는 것!
JMeter란?
JMeter란, 기능의 부하테스트 및 측정을 지원하는 Java Application 도구이다.
The Apache JMeter application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance.
JMeter의 주요 개념
Thread Group : 동시에 요청을 보내는 쓰레드 수(클라이언트 수라 생각)
Listener : 응답을 받았을 때 취하는 동작 (검증, 리포트, 그래프 그리기 등)
Configuration : Sampler 또는 Listener가 사용할 설정 값 (쿠키, JDBC 커넥션 등)
Assertion : 응답 결과의 성공 여부를 판단하는 조건 (응답 코드, 본문 내용 등)
Apache JMeter 설치 및 실행
MacOS의 경우 간단한 명령문으로 설치
brew install jmeter
Shell
복사
실행문
jmeter
Shell
복사
Apache JMeter 사용법
Thread Group 하나를 생성
이름 및 Thread Properties 을 설정해준다.
Number of Threads : 요청을 보내는 사용자의 수
Ramp-up period : 요청을 보내는 시간 간격
Loop Count : 반복 횟수
테스트할 HTTP Request를 생성
사용할 속성 입력
Protocol[http] : http 프로토콜 이용
Server Name : 서버 도메인 혹은 아이피 주소(필자의 경우 로컬에서 개발중이기 때문에 localhost 를 넣어주었다.)
HTTP Request : POST 방식 테스트를위해 선택
Port Number : ex) 8080
Path : 테스트할 API의 URI로 일단 api/user/signup
Body Data : Body에 실어보낼 요청값으로 작동확인을 위해 1개
{ "username": "test2name", "password1": "test1234@", "password2": "test1234@", "isAdmin": false }
Shell
복사
Header 등 요청에 필요한 추가적인 속성이 있다면 다음과 같이 요소를 추가 시켜 줄 수 있다. 현재는 우선 빈 상태로 테스트
테스트 후, 성능 지표를 보기 위한 Listener 를 추가
View Results TreeAggregate Graph 리스너로 결과를 보고자 추가했다.
Start 버튼으로 해당 요청을 실행 할 수 있다. Thread Group의 갯수, 반복 만큼 실행되지만 요청 자체 테스트라서 1회만 우선 사용해보았다.
결과는 다음 처럼 HTTP 요청이 정상적으로 실행되며, 실제로 서버에서도 Controller부터 DB까지 해당 요청이 정상적으로 진행되고 저장 된 것을 볼 수 있다.
이제 JMeter로 반복 및 스레드를 활용하는 것이 필요하다.
지금은 마치 POSTMAN처럼 요청의 정상 작동여부를 파악하게 되었다. 이제 대량 트래픽을 다루기 위해서 대량의 데이터를 추가하거나 조회, 업데이트하는 방법을 진행해야 한다.