본문 바로가기
BigData

JMeter 사용법

by david100gom 2019. 5. 5.

JMeter 개요

JMeter 홈페이지 : http://jmeter.apache.org/

 

Apache JMeter - Apache JMeter™

Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other t

jmeter.apache.org

JMeter 와 같은 퍼포먼스 테스트 툴은 서비스 개발후 운영서버의 성능을 테스트하기 위해서 많이 사용되고 있다. 소프트웨어적인 문제나 하드웨어적인 문제를 파악할수 있는 방법으로 퍼포먼스 테스트만큼 좋은 것은 없다. 그중 오픈소스로 가장 유명한 JMeter 는 계속 발전해 왔고, 기능 또한 매우 훌륭하다.

사용법은 메뉴얼이나 각종 블로그에서 찾아보면 쉽게 알수 있으니, 여기서는 테스트 중에 필요한 내용만 간략하게 정리하고자 한다.

Number of Threads

  • 스레드 개수이며, 가상 유저 수라고 생각하면 된다.
  • HTTP Request Sampler 가 2개일 경우, 스레드를 1로 설정해도, 2번의 request 가 발생한다. 가상 유저수가 HTTP Request Sampler 에 비례한다.

Ramp-Up

  • 스레드 당 생성시간으로, 만약  Number of Threads = 100이고,  Ramp-Up = 10 라면, 100명의 유저를 생성할  까지 10초가 걸린다는 말이다. 즉, 1 동안 10명의 유저가 요청을 하는것이고만약  Ramp-Up = 0 으로 설정하면동시 접속  수는 100명이 된다.

Loop Count

  • 하나의 스레드가 수행할 작업 수이며, 만약 Number of Threads = 100이고, Loop Count = 10 이면, 100명의 유저는 동일한 작업을 10 수행하게 되며, 총 1000번 (총 요청횟수) 이 수행된다.

Throughput

  • 단위 시간당 대상 서버(웹서버, WAS, DB 등)에서 처리되는 요청의 수를 말한다. JMeter에서는 시간 단위를 보통  TPS (Transaction Per Second)로 표현한다.
  • TPS 의 개념은 무조건 클라이언트에서 서버로의 요청(리퀘스트) 갯수로 이해하면 안된다. 한번의 요청(리퀘스트)이라고 하더라도 단순 웹사이트 호출 있수도 있고, 특정 데이터를 전송하여 서버사이드에서 처리되도록 하는 경우도 있다. 결론적으로 한번의 요청(리퀘스트)으로 몇번의 비즈니스 처리(트랜젝션)가 일어 나는지 확인하는것이 중요하다.  만약, POST 방식으로 10개의 데이터를 서버로 전송하고 건당 비즈니스 로직으로 처리가 된다면  1번 (요청수) * 10개 (데이터 수) = 10 TPS 라고 이해하는것이 좋다.
  • TPS plugin -

Timer 활용

  • Constant Timer : 스레드별 interval (delay) 설정 가능
  • Uniform Random Timer
  • Gaussian Random Timer
  • Poisson Random Timer
  • Constant Throughput Timer : 동일한 TPS 를 낼수 있음.
  • Synchronizing Timer
  • BeanShell Timer
  • BSF Timer
  • JSR223 Timer

 

테스트시 주의사항

  • 로컬 GUI 를 사용하지 말고, 서버상에서 CLI 모드로 테스트를 진행하자.
  • 부하서버와 대상서버를 같은 네트워크상에 놓고 진행하자.
  • 테스트 진행시 로컬(사무실) 네트워크 문제로 인해 에러율이 많이 나올수 있다. 즉, 한번 요청에 한번 응답이 와야 성공으로 판단한다. 요청이 성공해도 만약 네트워크 문제로 응답이 안오면 에러로 처리한다. 그러므로, 테스트할(대상) 서버와 같은 네트워크상에 부하를 주는 서버(부하서버) 를 준비하고, 부하 서버에서 대상서버로 부하를 준다. 또한 대상서버가 도메인이 있어, 부하 서버에서 실행시 도메인으로 설정하고 실행하게 되면, 네트워크 라우터를 많이 거치기 때문에, 에러율이 높아질수 있다, 그래서 다이렉트로 아이피로 설정하고 부하 테스트하는것을 추천한다.

참고 사이트

 

'BigData' 카테고리의 다른 글

하둡 Cloudera Manager 설치  (0) 2020.10.05
8 Best Big Data Tools in 2020  (0) 2020.09.19
엔터프라이즈 데이터 플랫폼 구축하기 1탄  (0) 2020.09.19
Kafka 핵심 포인트  (0) 2020.09.19
IoT 에서의 네트워크 엔진  (0) 2019.10.12
Apache Flume 맛보기  (0) 2019.03.12
MQTT  (0) 2015.06.17
참고서적  (1) 2013.01.14

댓글