hoonii2

[SpringBoot] JMeter 를 활용한 간단한 API 트래픽 테스트 본문

개념 공부/(개발) 02. Spring Boot

[SpringBoot] JMeter 를 활용한 간단한 API 트래픽 테스트

hoonii2 2023. 2. 28. 17:29

1. 개요

B2C 서비스의 API 를 생각했을 때 대용량 트래픽이 발생하는 경우를 미리 테스트하고 방지하는 것이 중요하다는 생각이 들었다.

 

이를 테스트하기위한 방법을 찾아보던 중 Apache JMeter 를 사용하면 개발한 API 에 어느정도 트래픽을 발생시킬 수 있고 결과도 확인할 수 있다는 것을 알게 되었다.

 

그래서 간단한 사용 방법과 결과를 공유하고자 한다.

 

 

2. JMeter 설치 ( 윈도우 만 )

https://jmeter.apache.org/download_jmeter.cgi

 

apache jmeter download 를 검색하면 쉽게 찾아올 수 있다.

여기서 Binaries 의 "apache-jmeter-5.5zip" 을 다운로드한다.

 

이후 압축을 푼 뒤 "apache-jmeter-5.5\bin\jmeter.sh" 파일을 실행하면 아래의 프로그램이 실행된다.

 

 

3. JMeter 설정

1) Test Plan

  - Key : Value 의 설정값 Add 하여 테스트 관련 설정을 미리 지정할 수 있다.

  - SERVER : 테스트 서버의 주소

  - LOOPCOUNT : 테스트를 반복할 횟수를 지정

 

2) Thread Group 추가 후 설정

  - Number of Threads : 한 테스트에 반복할 사용자 수를 지정

  - Ramp-up period : 쓰레드 생성 초 단위라고 하는데, 정확한 동작은 테스트하지 않았습니다.

  - Loop Count : 테스트 반복을 수행할 횟수를 지정 ( Test Plan 에서 사용한 ${LOOPCOUNT} 사용 )

 

3) HTTP Request

위 처럼 Protocol / Server / Port / Request Method / Path 등을 지정하고 Post 라면 Body , Get 이라면 Parameter 등 자신이 사용하는 형식에 맞게 설정

 

4) HTTP Header Manager

  - Json 을 사용한다면 아래와 같이 Type 설정

 

5) View Result Tree

미리 생성을 해두고 테스트 후 Request / Response Data 를 확인 가능

 

6) 설정 결과

좌측 트리가 이런 형태로 구성

 

 

3. Log 확인

테스트 후 배포한 Spring Boot 서버의 Log , JWT 저장 Redis Key , JMeter Result Tree 를 확인

 

1) 테스트 전

좌측 : 서버 로그 , 우측 : Redis Key

 

2) 테스트 진행

No 선택

3) 테스트 후

좌측 : 서버 로그 ( JPA 관련 이벤트 확인 ) , 우측 : Redis JWT 토큰 확인
각 요청의 Response Body 응답 확인 가능

 

4. 결과

현재 LOOPCOUNT 를 2 로 지정하고, 한 테스트당 users 를 10 개로 설정하니 아래처럼 총 Request 가 20개 발생했다.

우측 상단에서 전체 테스트 소요 시간을 확인할 수 있고

각 Request 의 Load time 과 Latency 정보 등등의 자세한 정보도 확인할 수 있다.

 

 

 

번외로 , JWT 토큰이 일부 응답에서 모두 동일한 토큰으로 발행 되었는데 아마 토큰 내 Hash 생성 시 계정 정보 + 시간으로 발생하는데 초단위로 생성되어 이러한 결과가 발생한 것 같다.

 

이를 방지하기 위해 ms 단위로 발행 혹은 다른 기준을 넣으면 각 Request 에 다른 토큰을 발급하는지 확인해봐야겠다.

 

Comments