[Spring] JMeter로 MVC와 WebFlux API 서버 성능 테스트

Spring Web MVC기반 API 서버와 Spring WebFlux 기반 API 서버의 성능을 테스트하기 위해 JMeter를 사용하여 테스트한다.
Hi's avatar
Apr 29, 2024
[Spring] JMeter로 MVC와 WebFlux API 서버 성능 테스트
 
📋
Spring Web MVC기반 API 서버와 Spring WebFlux 기반 API 서버의 성능을 테스트하기 위해 JMeter를 사용하여 테스트한다.
 

✅ JMeter 설치

notion image
brew install jmeter 명령어를 통해 jmeter를 설치한다. 나는 기존에 설치했기 때문에 이미 설치되어있다고 떴다. (설치하는 데 시간이 굉장히 오래 걸린다..)

✅ JMeter 실행

기존에 JMeter를 설치했다면 터미널에서 jmeter를 입력하여 GUI모드를 실행한다.
notion image
 

✅ 쓰레드 그룹 생성

notion image
Test Plan이라고 써있는 부분을 우클릭하여 Thread Group을 추가해준다.

✅ 쓰레드 그룹에서 테스트 조건 설정

notion image
  • Number of Threads (users)
    • 테스트할 사용자 수
  • Ramp-up period (seconds) 
    • 가상 사용자(가상 사용자 또는 스레드 그룹)가 시간에 따라 시스템에 점진적으로 로드를 증가시키는 기간
    • 테스트를 시작할 때부터 시스템에 동시에 갑작스럽게 과도한 부하가 가해지는 것을 방지하기 위함
    • 예를 들어, 1000명의 가상 사용자를 10초 동안 램프 업하도록 설정하면, 매 초마다 100명의 가상 사용자가 시스템에 추가된다.
  • Loop Count
    • 각각의 스레드(가상 사용자)가 지정된 횟수만큼 테스트를 반복
    • 무한에 체크하면 정지하기 전까지 계속해서 요청을 보냄
 

✅ HTTP 요청 생성

notion image
마찬가지로 Thread Group을 우클릭하여 HTTP Request를 추가해준다.

✅ HTTP 요청 설정

notion image
요청을 보낼 Protocol, IP, Method, Path 등을 설정하면 된다.
 

✅ Listener 등록 (테스트 결과 보기)

notion image
HTTP Request 부분을 우클릭하여 Listner에서 Summary Report를 추가해준다. 필요하다면 다른 것을 추가해서 봐도 좋다!
 

✅ 테스트할 서버 실행

notion image
나는 MVC 기반과 WebFlux 기반 API 서버의 성능을 테스트하기 위해 각각에 대한 Controller, Service, Repository를 구현했다.
 

✅ 테스트 실행

notion image
초록색 시작 버튼을 누른 뒤 Summary Report를 확인해보면 요청에 따라 서버 성능에 대한 지표가 나타날 것이다.
 

✅ 테스트 Disable

notion image
테스트를 하고싶지 않은 쓰레드 그룹이나 HTTP 요청은 Disable을 하여 테스트 대상에서 제외시킬 수 있다.
 

✅ UPDATE Method 사용 시 주의사항

notion image
notion image
UPDATE와 같이 Request Body에 json 타입으로 데이터를 전송할 경우 HTTP Header Manager를 해당 요청에 따로 추가해서 Name에는 Content-Type, Value에는 application/json을 넣어줘야 한다.
 

✅ Duration 설정

일정 시간 동안만 테스트를 수행하고 싶다면, 타이머를 적용하고 싶은 Thread Group에 Duration 설정을 추가하면 된다!
notion image
→ 30초 동안만 테스트를 진행하고 싶으면 Duration에 30을 입력하면 된다.
 

✅ Summary Report

notion image
  • #Samples : 서버에 요청한 횟수
  • Average : 평균응답시간(ms)
  • Min : 최소응답시간(ms)
  • Max : 최대응답시간(ms)
  • Std. Dev. : 표준편차
    • 요청에 대한 응답시간의 일정하고 안정적인가를 확인, 값이 작을수록 안정적이다.
  • Error : Error율(%)
  • Throughput : 처리량(초당 처리건수)
  • KB/sec : 처리량(초당 처리 KB)
Share article

soultree