Sky Archive

Apache

[Apache JMeter] 설치부터 사용법 소개(서비스 성능 테스트 도구)

Anchovy ʕ-᷅ᴥ-᷄ʔ 2021. 7. 1. 10:25

Apache JMeter

: 서버가 제공하는 서비스에 대한 성능을 측정하고 사용자에게 보여주는 서버 부하 테스트 도구

간단히 서버에 부하를 주고 그 결과를 확인하는 툴라고 생각하면 된다.🐱‍🐉

 

아파치 JMeter 홈페이지

http://jmeter.apache.org/

1. 설치

Apache JMeter 5.4.1  Java 8 이상
openjdk version "1.8.0_292"

압축 해제 후 apache-jmeter-5.4.1\bin\jmeter.bat 실행

- cmd 창과 함께 Apache Jmeter 실행(cmd 창을 종료하면 JMeter도 함께 종료되니 유의한다!)

 

2. JMeter 설정

2.1 Throad Gruop 생성

Test Plan > Threads (Users) > Throad Gruop 클릭하여 생성

 

2.2 Throad Gruop 설정

  • Action to be taken after a Sampler error: 실행 중 에러가 발생하면 처리할 방법을 선택
  • Thread Properties:
    • Number of Threads (users) : 스레드의 개수 = 유저 수
    • Ramp-Up Period (in seconds) : 여러 개의 실행 시간
  • Loop Count : 테스트 반복 횟수

 

※ Thread & Loop count 상관관계

  • 10 thread (users) + 5 loop
  • 50 thread + 1 loop

위 예시는 둘 다 결과적으로 50개의 sample을 제공하는데, 어떤 차이가 있는가?

 

JMeter로는 실제 사용자보다 더 빠르게 서버에 리퀘스트를 보낼 수 있기 때문에 시스템에 더욱더 부하를 줄 수 있다. 예를 들어, 실제 사용자가 페이지가 뜨기를 기다렸다가 10초 후에 다음 링크를 클릭한다면 (thinking time), JMeter로는 1초 (같은 시간) 안에 10배가량의 부하를 줄 수 있는 셈인 것이다.

그렇기 때문에 하나의 JMeter thread의 초당 리퀘스트 숫자만으로 10명 이상의 사용자를 시뮬레이션 할 수 있다. 10개 스레드 * 5회 반복의 경우 10명의 사용자가 주어진 순서 (예: 메인 페이지 - 로그인 - 페이지 뷰 - … )를 각각 5회 반복하는 것이기 때문에 반복하는 것이 큰 의미가 없을 수 있다.

출처 https://hunj.dev/blog/jmeter/

 

2.3 HTTP Cookis Manager 생성

생성된 Throad Gruop 우클릭 > Add > Config Element > HTTP Cookis Manager 클릭

 

Cookie를 이용해 로그인하는 경우(session 자동 생성하기)

Chrome > F12 > Application > Cookies > 쿠키에 저장된 항목을 그대로 복사한다.

 

2.4 Once Only Controller 생성

Throad Gruop > Add > Logic Conrtoller > Once Only Controller 클릭

 

2.5 HTTP Request 생성 (1)

Once Only Controller 우클릭 > Add > Sampler > HTTP Request

 

2.6 HTTP Request 설정 (1)

Name : 테스트할 페이지의 명

Server Name or IP : localhost

Port Number : 사용하는 포트 정보

Method : Parameter를 받아오는 방식 (Default: Get)

Path : 페이지의 mapping 주소

Add : Parameter 추가 (Parameter 없으면 생략 가능)

 

2.7 HTTP Request 생성 (2)

처리 후 다음 페이지를 확인하기 위해서

Thread Group 우클릭 > Add > Sampler > HTTP Request 생성

 

2.8 HTTP Request 생성 (2)

Name, Server Name or IP, Port Number, Path만 설정

 

2.9 Listener를 통한 결과 확인

Add > Listener > View Results Tree 클릭

주로 View Results Tree / Summary Report / Graph Results 사용하며, 요청을 보낸 후 성공, 실패, 응답시간, 응답 메시지 등을 확인할 수 있다.

 

3. Apache Jmeter 실행

실행 버튼을 클릭하여 Thread 테스트를 실행, Listener에서 실행 결과를 확인한다.

이후 재실행을 위해 테스트 결과를 지우고 싶은 경우 Clear / Clear All (톱니바퀴) 버튼을 누른다.

 

3.1 테스트 및 결과 해석

샘플 1. Google 부하 테스트

- 조건

  • 100명의 예상 사용자가 있을 때 테스터가 JMeter를 사용하여 Google.com에 대해 수행한 분석
  • 루프 수: 10, 램프 업: 100, 스레드 수: 100

출처 https://www.loadview-testing.com/blog/5-jmeter-load-testing-examples/

Graph Results를 보면,

  • 파란색 : 보낸 샘플의 평균
  • 검은색 : 전송된 총 샘플 수
  • 녹색 : 서버가 1 분마다 처리한 요청 (트래픽 / 사용자) 수를 나타내는 처리 속도
  • 빨간색 : 표준 편차

을 의미하고

처리량 (녹색) 및 편차 (빨간색)를 분석한다. 왜? 처리량은 과부하 처리와 관련하여 서버의 용량을 나타내는 가장 필수적인 매개 변수이기 때문. 따라서 처리량이 높고 편차가 낮다는 것은 서버의 성능이 뛰어남을 의미한다.

따라서 Google의 처리량은 분당 1,491.193이며 이는 Google 서버가 분당 1,491.193 개의 요청을 처리할 수 ​​있음을 의미한다. 그리고 편차는 577. 따라서 Google 서버가 최대 부하를 견딜 수 있음이 확인된다.

 

샘플 2. Yahoo 부하 테스트

출처 https://www.loadview-testing.com/blog/5-jmeter-load-testing-examples/

  • 처리량 = 분당 867.326
  • 편차 = 2689

서버가 분당 867.326 개의 요청만 처리할 수 ​​있음을 의미하고 편차가 매우 높다.(2689). Yahoo 서버는 특히 Google과 비교하면 과도한 트래픽을 처리할 수 ​​없음을 뜻한다. 따라서 결과는 Yahoo의 성능이 Google에 비해 테스트에 이상적이지 않다.