테스트

Apache JMeter 사용해보기, REST API 부하주기 (2)

pepega 2023. 11. 11. 19:43

1) JMeter 설치하기: https://pepega.tistory.com/86

2) REST API 부하주기: https://pepega.tistory.com/87

 

이전 글에서는 JMeter를 설치하고 실행까지 해봤습니다.

이번 글에서는 JMeter를 사용해서 api endpoint를 호출하고 부하를 주겠습니다!

 

 

API 정보

사용할 REST API 는 아래와 같습니다.

API 정보

https://goose-auth.synology.me/swagger-ui/index.html#/Health-check/healthCheck

 

관련 소스코드

https://github.com/GHGHGHKO/goose-auth-api-server

 

 

 

 

부하주기 전 JMeter 세팅하기

Thread Group 세팅하기

Test Plan을 오른쪽 마우스 클릭하여 Thread Group을 추가합니다.

부하를 줄 Thread 만들기

 

 

부하를 줄 Threads를 세팅해줍니다.

1초동안 50명의 유저가 호출 (50번 반복)

 

설명 원본 : https://jmeter.apache.org/usermanual/test_plan.html#thread_group

Number of Threads : REST API 를 호출할 Threads 개수

Ramp-up period (seconds) : 세팅되어 있는 Threads의 max 값 까지 올라가는 시간

  • 예를 들어, 10개의 Threads가 100초의 Ramp-up period면 10개의 Threads를 실행하는데에 100초가 걸립니다.
  • 각 Thread는 이전 Thread가 시작된 후 10(100/10)초 후에 시작됩니다.

Loop Count : 반복 횟수

 

 

HTTP Request 세팅하기

Thread Group을 우클릭하여 HTTP Request를 추가합니다.

 

 

HTTP Header도 세팅해주어야 하기 때문에

HTTP Header도 추가해줍니다.

 

 

HTTP Request에 들어가서 부하를 줄 REST API를 세팅합니다.

API 정보 https://goose-auth.synology.me/swagger-ui/index.html#/Health-check/healthCheck

 

Header도 추가해주어야 하니 HTTP Header Manager에 접속하여

Header를 입력해줍니다.

하단에 Add를 눌러 Header 정보를 입력 할 수 있습니다.

 

이제 어느정도 세팅이 되었습니다.

부하를 준 뒤 결과를 확인하기 위한

Listener를 추가해줍니다.

 

 

Listener 세팅하기

 

우측에 깃털 모양을 클릭해서

그래프 plugins을 설치합니다.

 

 

Available Plugins에서 3 Basic Graphs를 검색하여

Plugins를 추가해줍니다.

 

전 이미 설치되어 있어서 보이지 않습니다 ㅜㅜ

 

 

Thread Group을 우클릭해서

설치된 Plugins 3개를 추가해줍니다.

 

 

API의 호출 결과를 확인하기 위해

View Results Tree를 추가해줍니다.

 

 

 

 

부하주기

세팅이 완료되면

상단에 녹색 플레이 버튼을 누릅니다.

 

 

 

정상적으로 API가 호출된 것을 확인합니다.

 

 

plugins에서 추가한 그래프 정보를 확인합니다.

50개의 쓰레드가 사용된 걸 확인할 수 있습니다!

 

도지 귀모양

최대 응답 시간이 188ms가 나왔군요!

 

 

TPS는 최대 327이 나왔습니다.

 

 

간단한 플러그인과 간단한 API를 활용하여

최소한의 부하 테스트를 해보았습니다.

 

JMeter를 사용하여 더 부하 테스트를 할 수 있는 더 좋은 방법이 있다면

댓글로 남겨주시면 감사하겠습니다. :)

 

 

참고자료

https://jmeter.apache.org/usermanual/test_plan.html#thread_group

https://goose-auth.synology.me/swagger-ui/index.html#/Health-check/healthCheck

https://github.com/GHGHGHKO/goose-auth-api-server