Etc

[부하테스트]apache jmeter를 이용한 부하테스트 방법 정리

Dddu 2024. 4. 14. 16:51

5개월 전 쯤 jMeter를 사용해본 적이 있는데 그땐 jMeter를 몰라서 도대체가 부하테스트를 어떻게 해보지 ~  postman으로 노가다를 해야하나^^ 고민에 빠졌을 때 회사 내 옆자리 만능 당리가 jMeter를 알려줘서 사용해봤었다.

 

조만간 당리와 부하테스트를 담당하게 돼서 Apache Jmeter를 이용하여 부하테스트 하는 방법을 정리해보았다.

 

설치 전 필수 확인사항

- apache jMeter 설치 전, 자바 8 다운로드는 필수 ! 

 

 

 

 

1. apache 공식 홈페이지를 접속하여 다운로드 받는다. (zip파일)

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

 

 

2. 다운로드가 완료됐다면 맥 - sh 파일 / 윈도우 - bat 파일 클릭 !

나는 윈도우니까 jmeter.bat 클릭 !

 

 

 

 

3. jMeter 처음 접속 시 나오는 화면 ! Test Plan의 name 수정 가능함. 나는 티스토리 어쩌구로 바꿈

 

 

4.  test Plan 우클릭 > add > Threads(Users) > Thread Group 선택 ! 

 

5. 이제 테스트 환경을 위하여 몇가지 설정 진행. (테스트 사용 수 / 실행 시간 / 반복 수 )

 

  • Number of Threads(users) : 쓰레드들의 수, 가상 사용자를 몇 명으로 설정할지를 의미함. 
  • Ramp-up period(seconds) : 실행시간(쓰레드 수 들을 얼마 시간 동안 테스트할지)
  • Loop Count : 반복 수  infinite 체크 시 중단할 때 까지 무한 전송.
    Number of Threads : 1000 / Ramp-up period : 5 / Loop Count : 2
    => 5초동안 1000명이 2번 접속.

 

6. Http 요청 샘플러를 생성해보자.
Thread Group 우클릭 > add > Sampler > HTTP Request 클릭 !

 

 

 

7. web server란에 프로토콜, 서버명 or IP, 포트번호, path 입력

 

  • protocol : http 또는 https 입력. ( default : http)
  • Server Name or IP : 테스트하려는 도메인 또는 IP
  • Port Number : 테스트하려는 서버의 포트
  • Path : 테스트하려는 서버의 path . 
  • Content encoding : UTF-8

* POST 요청일 경우 Body Data 추가 설정해주면 되고, Http Header 추가 설정 필요함.

생성한 Sampler > add > Config Element > HTTP Header Manager

 

 

하단의 add를 클릭하면 row 추가가 됨.

Content-type : application/json 같은 값들을 넣어주면 됨

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

 

8. 테스트하기 위한 설정은 끝났으므로 이제 테스트 수행 결과를 쉽게 살펴볼 수 있는 리스너를 만들기

Http Request 우클릭 > add > Listener > View Results Tree 및  Summary Report
(기본적으로 제공하는 그래프 말고, TPS 그래프도 필요하다면 외부 플러그인 추가 설치 ㄱ)

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

 

 

 

위에 초록색 실행버튼을 눌러서 테스트 실행 !

실행 버튼 클릭 시 구성한 테스트 계획을 저장할지 물어보는 팝업이 나오는데, 저장할 거면 예 / 아니면 아니오 클릭! 나는 저장 안 하고 진행해보겠다.

 

 

9. 실행 후 아까 리스너에 추가했던 Summary Report 요약보고서 및 View Results Tree를 확인해보자 !

*Summary Report

 

samples Average Min Max Std.Dev Error Throughput Recieved KB/sec Send KB/sec Avg.Bytes
request 개수 응답 평균 응답 최소 응답 최대 응답 표준편차 에러율 시간당 처리량 시간당(sec)받은 데이터(KB) 시간당(sec)보낸 데이터(KB) 평균 바이트

 

총 300번의 요청이 수행됐으며 평균 최소 최대는 ms 단위이다 (1000밀리초 = 1초)

따라서 평균적으로 1.1초 정도의 응답시간이 소요되었음을 알 수 있다.

에러율은 HTTP 응답 코드로 판단한다. 66.67%의 에러율.

처리량 = Throughput. Transaction Per Second를 의미하는 TPS
-> TPS는 초당 트랜잭션의 개수를 말하며 서비스 성능의 기준이 된다. 

 

* View Results Tree

 

브라우저의 개발자 도구같다.

개별 요청의 Request / Response를 볼 수 있으며

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