[Spring] Apache JMeter 사용 방법

김강욱·2024년 5월 3일
2

Spring

목록 보기
6/17
post-thumbnail

이번 시간에는 Apache JMeter를 이용하여 간단하게 성능 테스트하는 방법에 대해 알아보겠습니다.

다양한 성능 테스트 Tool들이 존재하지만 저는 다양한 기능과 플러그인을 제공하고 간단하게 테스트를 진행할 수 있도록 해주는 Apache JMeter를 사용해보려 합니다.

nGrinder를 이용한 테스트에 대한 게시글도 있으니 참고하시면 될 것 같습니다.

nGrinder 테스트 방법

😁 성능 테스트에서 무엇을 확인해야할까?

성능을 테스트하는 것은 알겠는데 무엇을 보고 성능이 좋다 나쁘다를 판단할 수 있을까요? 성능 테스트의 지표에 대해 알아보고 테스트를 진행하도록 하겠습니다.

먼저 성능 테스트 시 꼭 알아야하는 개념이 있는데, 응답시간TPS입니다.

✏️ 응답 시간(Response Time)

응답 시간은 클라이언트가 서버에 요청을 보내고 서버가 해당 요청에 대한 응답을 받을 때까지 걸리는 시간을 뜻합니다. 응답 시간이 짧을수록 시스템이 빠르게 응답하고 있음을 의미합니다.

응답 시간은 주로 두가지로 분류됩니다.

1. 처리 시간(Processing Time)
서버가 클라이언트의 요청을 수신한 후 실제로 해당 요청을 처리하는 데 걸리는 시간을 의미합니다.
2. 대기 시간(Latency Time)
클라이언트가 요청을 서버에 보내고, 서버가 해당 요청을 수신하고 처리하기 시작할 때까지 걸리는 시간을 의미합니다.

⚙️ 응답 시간 공식

응답 시간의 공식은 아래와 같습니다.

[동시 사용자 수 / 초당 요청 처리 수(TPS)] - 인지시간(Think Time)
동시 사용자 수 : 시스템에 동시에 접속해 있는 사용자의 수
초당 요청 처리수 (TPS) : 시스템이 처리하는 요청의 수를 초당으로 측정한 값
인지 시간 (ThinkTime) : 사용자가 두 번의 연속된 트랜잭션을 요청하는 데 걸리는 시간으로, 사용자가 하나의 요청을 완료한 후 다음 요청을 보내기까지의 시간

✏️ TPS(Throughput)

TPS는 시스템이 단위 시간 동안 처리하는 전체 트랜잭션 수를 나타냅니다. 쉽게 생각하여 서버가 단위 시간(초당) 처리할 수 있는 요청의 수라고 보시면 됩니다.

TPS가 높을 수록 초당 처리하는 요청의 수가 많으니 좋은 것이겠죠.

😁 JMeter 설치

아파치 재단이 제공하는 오픈소스로 공식 사이트에서 다운로드가 가능합니다. JMeter는 Java 기반으로 이루어졌기 때문에 Java가 깔려있어야 실행 가능합니다.

저는 Window를 사용하므로 Window 기반으로 설치 및 테스트 진행하는 것을 보여드리겠습니다.

먼저 아파치 공식 사이트에 들어가셔서 zip 파일을 다운받아주시면 됩니다.

zip 파일을 압축 푸신 후 들어가시면 bin 폴더가 있을 겁니다. bin 폴더 내부로 들어가셔서 jmeter.bat 명령어를 실행하여 JMeter를 실행해주시면 됩니다.

+ 그래프 플러그인 (Graph Plugin)

JMeter에서 기본적으로 제공하는 그래프가 있지만, TPS를 확인하기 위해 외부 플러그인을 추가로 설치하여 적용해보았습니다.

https://jmeter-plugins.org/?search=jpgc-graphs-basic 로 들어가서 plugin을 다운받아줍시다.

다운로드 버전에 2.0을 클릭하시면 다운로드가 진행됩니다.

다운받은 zip 파일을 들어가셔서 bin폴더를 열면 ext 폴더와 jar 파일이 있을 겁니다. ext 폴더 내부에도 jar 파일이 있는데 총 세 개의 jar 파일을 JMeter의 lib 폴더 내부의 ext 폴더 안에 넣어주시면 됩니다.

이후 JMeter를 실행해봅시다!

Listener 밑에 추가되어있으면 성공하신 겁니다.


😁 JMeter 설정

1. Thread 그룹 생성

Test Plan -> Add -> Threads(Users) -> Thread Group에서 생성하실 수 있습니다.

  • Number of Threads (users)는 스레드 수, 즉 동시 사용자 수라고 보시면 됩니다.
  • Ramp-up period (seconds)는 지정된 유저가 모두 로딩될 시간을 뜻입니다.
  • Loop Count는 테스트 반복 횟수를 의미합니다.

이런 식으로 설정하시면 됩니다. 1초에 30번의 부하를 10번 반복하도록 세팅하였습니다.

2. Sampler 생성

HTTP 요청에 대한 세팅하기 위해 Thread Group -> Add -> Sampler -> HTTP Request를 들어갑니다.

Web Server란에서 프로토콜, 서버 이름 or IP 주소, 포트번호를 기입하고 Path에 테스트하고 싶은 URI를 기입하시면 됩니다.

Body Data나 파라미터, 파일도 업데이트 하실 수 있습니다.

헤더 정보

요청 시 헤더 정보를 기입하고 싶으시면 생성한 Sampler -> Add -> Config Element -> HTTP Header Manager로 들어가셔서 세팅해주시면 됩니다.

저 같은 경우 헤더에 토큰값을 집어넣어주었습니다.

3. Listener 생성

Listener는 Test Plan, Thread Group, Sampler 까지 단위별로 설정 가능한 것 같습니다.

Listener 종류는 다양하지만 해당 포스팅에서 아래 3가지 Listener를 사용해보도록 하겠습니다.

  • View Results Tree
  • Summary Report
  • TPS Graph

위의 사진과 같이 Listenr 설정을 해주시고 초록색 화살표를 클릭하시면 테스트가 진행됩니다.

서버에 요청이 계속 들어오는 것을 확인하실 수 있습니다!

View Results Tree

개별의 요청에 대한 Request / Response 정보를 볼 수 있습니다.

Summary Report

평균, 최소, 최대의 단위는 ms입니다.

Label - Sampler 이름
Samples - requset 개수
Average - 응답 평균
Min - 응답 최소
Max - 응답 최대
Std. Dev. - 응답 표준편차
Error % - 에러율
Throughput - 시간당 처리량
Received KB/sec - 시간당(sec) 받은 데이터(KB)
Sent KB/sec - 시간당(sec) 보낸 데이터(KB)
Avg. Bytes - 평균 바이트

TPS Graph

TPS 수치를 그래프로 볼 수 있습니다.


https://leeggmin.tistory.com/10

해당 블로그에서 너무 설명을 잘해주셔서 보고 따라하시면 간단하게 테스트를 진행하실 수 있을 겁니다!

참고 자료
https://leeggmin.tistory.com/10
Ohsanrim님 블로그

profile
TO BE DEVELOPER

0개의 댓글

관련 채용 정보