[JMeter] Apache JMeter를 이용한 간단한 성능 테스트

선행 지식

성능 테스트시 꼭 알고 가야하는 개념이 있는데, 바로 응답시간TPS다.

이 둘은 성능 테스트의 중요한 지표이다.

 

응답시간(Response Time)

  • 클라이언트가 서버에 요청을 하고 그 요청에 대한 응답을 받을 때까지 걸린 시간을 의미한다.
  • 응답 시간은 아래의 두가지로 분류 가능하다.
    • 처리 시간(Processing Time) : 실제 서버가 요청을 처리하는데 걸린 시간
    • 대기 시간(Latency Time) : 클라이언트와 서버간에 데이터를 주고 받는데 걸리는 시간
응답시간(Respose Time) = [동시 사용자 수 / 초당 요청 수(TPS)] - 인지시간(Think Time)

 

TPS(Throughput)

  • 서버가 초당 처리할 수 있는 요청의 개수를 나타낸다.
  • TPS 가 높을 수록 초당 처리할 수 있는 요청의 수가 많다.
초당 요청 수(TPS) = 동시 사용자 수 / 응답시간(Response Time) + 인지시간(Think Time)

 

JMeter 설치

아파치 재단이 제공하는 오픈소스로 공식 사이트 에서 다운로드 가능하다.

JMeter는 JAVA 기반이기 때문에 자바가 깔려 있어야 한다!

모든 설치/실행 과정은 Mac OS를 기반으로 진행

설치는 여러 방법으로 진행할 수 있지만, 필자는 직접 파일을 다운받는 방법을 선택하였다.

 

 

  1. 압축 파일을 다운로드 받고 압축을 풀어주자.
  2. /bin 디렉터리 이동 -> cd /bin
  3. jmeter 실행 -> ./jmeter

 

+ 한글 깨짐 방지

Request 나 Response Data에 한글이 있다면 설정 해주세요.

/bin/jmeter.properties 에 아래 구문 추가해주시고 재시작 해주시면 적용됩니다.

#sampleresult.default.encoding=ISO-8859-1
sampleresult.default.encoding=UTF-8

아무래도 외국에서 만든거라 Default Encoding이 ISO-8859-1로 되어있네요.

 

 

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

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

https://jmeter-plugins.org/?search=jpgc-graphs-basic

 

JMeter Plugins :: JMeter-Plugins.org

 

jmeter-plugins.org

다운 받으셨다면 /iib 폴더 안에 넣어 주세요.

 

 

Listener 밑에 추가된 것을 확인할 수 있습니다.

 

JMeter 설정

실행 하게되면 볼 수 있는 기본 화면 입니다.

 

 

 

Thread 그룹 생성

Test Plan -> Add -> Threads(Users) -> Thread Group

  • Number of Threads (users) : 스레드수 - 유저 수
  • Ramp-up period (seconds) : 지정된 유저가 모두 로딩될 시간
  • Loop Count : 반복 횟수

 

 

저는 1초에 50번의 부하를 100번 반복하도록 설정했습니다.

 

 

Sampler 생성

Http 요청을 해야하니 HTTP Request를 생성하겠습니다.

Thread Group -> add-> Sampler -> HTTP Request

 

 

Web Server란에 서버 이름 or IP와 포트 번호를 넣고

Path에 나머지 URI를 입력하면 됩니다. 프로토콜은 http가 Default 인거 같네요.

저는 POST 요청을 보내야 해서 Body Data도 추가로 설정 해주었습니다.

+ 내용이 많을 경우에는 jmter가 응답없음 상태로 변경될 수도 있다하니 files Upload를 씁시다 !

 

POST 요청시 추가 설정

POST 로 요청시에는 HTTP Header 설정을 추가로 해주어야 합니다.

생성한 Sampler -> Add -> Config Element -> HTTP Header Manager

 

 

여기서 Add를 클릭하여 Content-type : application/json 값을 넣어 줍니다.

참고로 여기서 Authorzation 같은 헤더 값들을 설정해줄 수 있습니다.

 

Listener 생성

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

저는 이번 포스팅에선 Thread Group에 Listener 설정하겠습니다.

 

Listener 종류가 많은데 저는 3가지만 소개하겠습니다.

  • View Results Tree
  • Summary Report
  • TPS Graph

 

 

상단의 초록색 스타트 버튼(누가봐도 시작 버튼)을 누르면 요청이 갑니다.
비교를 위해 테스트 케이스를 2개 생성했습니다.

 

View Results Tree

브라우저의 개발자 도구라고 생각하시면 됩니다.

개별 요청의 Request / Response를 볼 수 있습니다.

응답 body 까지만 확인 가능합니다.

 

검은 부분은 개인정보라 가렸습니다.

 

 

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 [지민의 성장일지:티스토리]