[Spring] JMeter로 MVC와 WebFlux API 서버 성능 테스트
Spring Web MVC기반 API 서버와 Spring WebFlux 기반 API 서버의 성능을 테스트하기 위해 JMeter를 사용하여 테스트한다.
Apr 29, 2024
Spring Web MVC기반 API 서버와 Spring WebFlux 기반 API 서버의 성능을 테스트하기 위해 JMeter를 사용하여 테스트한다.
✅ JMeter 설치
brew install jmeter
명령어를 통해 jmeter를 설치한다. 나는 기존에 설치했기 때문에 이미 설치되어있다고 떴다. (설치하는 데 시간이 굉장히 오래 걸린다..)✅ JMeter 실행
기존에 JMeter를 설치했다면 터미널에서
jmeter
를 입력하여 GUI모드를 실행한다.✅ 쓰레드 그룹 생성
Test Plan이라고 써있는 부분을 우클릭하여 Thread Group을 추가해준다.
✅ 쓰레드 그룹에서 테스트 조건 설정
- Number of Threads (users)
- 테스트할 사용자 수
- Ramp-up period (seconds)
- 가상 사용자(가상 사용자 또는 스레드 그룹)가 시간에 따라 시스템에 점진적으로 로드를 증가시키는 기간
- 테스트를 시작할 때부터 시스템에 동시에 갑작스럽게 과도한 부하가 가해지는 것을 방지하기 위함
- 예를 들어, 1000명의 가상 사용자를 10초 동안 램프 업하도록 설정하면, 매 초마다 100명의 가상 사용자가 시스템에 추가된다.
- Loop Count
- 각각의 스레드(가상 사용자)가 지정된 횟수만큼 테스트를 반복
- 무한에 체크하면 정지하기 전까지 계속해서 요청을 보냄
✅ HTTP 요청 생성
마찬가지로 Thread Group을 우클릭하여 HTTP Request를 추가해준다.
✅ HTTP 요청 설정
요청을 보낼 Protocol, IP, Method, Path 등을 설정하면 된다.
✅ Listener 등록 (테스트 결과 보기)
HTTP Request 부분을 우클릭하여 Listner에서 Summary Report를 추가해준다. 필요하다면 다른 것을 추가해서 봐도 좋다!
✅ 테스트할 서버 실행
나는 MVC 기반과 WebFlux 기반 API 서버의 성능을 테스트하기 위해 각각에 대한 Controller, Service, Repository를 구현했다.
✅ 테스트 실행
초록색 시작 버튼을 누른 뒤 Summary Report를 확인해보면 요청에 따라 서버 성능에 대한 지표가 나타날 것이다.
✅ 테스트 Disable
테스트를 하고싶지 않은 쓰레드 그룹이나 HTTP 요청은 Disable을 하여 테스트 대상에서 제외시킬 수 있다.
✅ UPDATE Method 사용 시 주의사항
UPDATE와 같이 Request Body에 json 타입으로 데이터를 전송할 경우 HTTP Header Manager를 해당 요청에 따로 추가해서 Name에는 Content-Type, Value에는 application/json을 넣어줘야 한다.
✅ Duration 설정
일정 시간 동안만 테스트를 수행하고 싶다면, 타이머를 적용하고 싶은 Thread Group에 Duration 설정을 추가하면 된다!
→ 30초 동안만 테스트를 진행하고 싶으면 Duration에 30을 입력하면 된다.
✅ Summary Report
- #Samples : 서버에 요청한 횟수
- Average : 평균응답시간(ms)
- Min : 최소응답시간(ms)
- Max : 최대응답시간(ms)
- Std. Dev. : 표준편차
요청에 대한 응답시간의 일정하고 안정적인가를 확인, 값이 작을수록 안정적이다.
- Error : Error율(%)
- Throughput : 처리량(초당 처리건수)
- KB/sec : 처리량(초당 처리 KB)
Share article