ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Apache JMeter(Thread Group, Sampler, Listener)
    Network 2023. 12. 29. 11:28
    728x90

    성능 테스트를 위해, Apache JMeter를 이용한다.

    • 자바 오픈 소스 소프트웨어
    • 퍼포먼스 테스팅은 무거운 로드와 다양하고 동시의 유저 트래픽에 대한 웹 애플리케이션을 테스트하는 것을 의미
    • 기능 테스트, 데이터베이스 서버 테스트 및 API 테스팅에 활용

    오픈 소스 라이센스

    유저 친화적인 GUI

    독립된 플랫폼 > Mac, unix, windows에서 모두 사용가능

    • 자바 based 애플리케이션

    멀티 스레딩 프레임워크

    테스트 결과를 시각화

    쉬운 설치

    Highly extensible

    Unlimited testing capabilities

     

    이용 : Java 설치(8 이상) > homebrew 이용 jmeter 설치  > 실행 명령어 : open /opt/homebrew/bin/Jmeter 혹은 open /usr/local/bin/jmeter

     

    Http Request Sampler

    Number of Threads : 몇 개의 스레드로 테스트할 지

    Ramp-up period : 스레드 개수 만큼의 스레드를 몇초에 걸쳐서 만들 지

    Loop count : 요청을 몇번을 반복할지

    1. 타겟 서버에 요청을 보낸다
    2. 타겟 서버의 통계량을 구한다
    3. 테스트 결과를 다른 포맷으로 생성한다

     

    Element

    : Different components of JMeter

    • Specific purpose

    - Http Header 설정(Ex. Authorization) 등을 Element에서 담당한다

     

    Thread Group, Samplers, Listeners, Configuration

    Thread Group

    • A collection of Threads
    • 각 스레드는 테스트 하에서 애플리케이션을 사용하는 유저를 상징하며, 기본적으로 각 스레드는 서버에 한 실제 유저의 req을 보낸다고 가정한다.
    • Thread Group에 대한 조정은 각 그룹의 스레드의 수를 설정하도록 도와준다
    • 예시로, 100개의 스레드를 설정했다면, JMeter는 100명의 유저에 대한 request를 서버에 보내어 테스트하는 셈이다.

     

    Samplers

    • Thread 그룹에 의해 받는 request들과는 다르다
    • User request는 FTP request, HTTP request, JDBC request… 등이 될 수 있다

     

    Listeners

    • Test 수행의 결과를 보여준다
    • 트리, 테이블, 로그 파일, 그래프와 같은 형태로 보여줄 수 있다
    • Result Tree : HTML 포맷으로 request를 보여준다
    • Log : 텍스트 파일의 테스트 결과를 요약

     

    Configuration Elements

    • Sampler들에 의한 최근 사용에 대한 변수와 디폴트 설정
    • 가장 흔하게 사용되는 config element in JMeter

     

    개략적 진행 순서

    1. Start Jmeter

    2. Create a TestPlan

    3. Create a Thread Group

    4. Add a Sampler

    5. Add Listeners

    6. Run Test Plan

    7. Save Test Plan

     

    Timer

    Jmeter는 Sampler와 request 사이의 어떤 딜레이 없이 request를 전송한다

    만약 서버가 딜레이 없이 로드/스트레스 테스트를 실시한다면, overload가 발생할 것이다. 그리고,

    현실적인 결과를 얻지 못하고 실제 상황을 시뮬레이션 하는데 실패한다. 이를 방지하기 위해, JMeter는 Timer 기능이 있다.

     

    Timer의 종류

    Constant timer

    Uniform random timer

    Gaussia random timer

    Beanshell timer

    BSF timer

    JSR223 Timer

     

    Request 밑에 timer를 달아놓는 것 > Timer에서 설정한 시간이 지난 다음에 request를 보낸다

    JMeter-Graph Results

    부하테스트에서 가장 많이 사용하는 결과 그래프.

    데이터양을 적게하면 이렇게 된다..

    실제 api 테스트를 해보면 이런 화면이 나올 수도 있다. 아래 화면은 100개의 스레드를 만들어서 테스트한 결과다.(테스트 기준이 100명이라 그렇다..)

    그래프 설명
    Data (검정) 건의 요청
    Average (파랑) Data 결과의 평균
    Median (보라) Data 결과의 최소, 최대의 중간
    Throughput (초록) 누적 요청 건수
    세로축 응답 시간
    가로축 Sample 번호

    Data : 그래프에서 검정색 점.

    • 각 샘플들의 응답시간을 점으로 표시
    • 세로축의 맨 위 시간 : 최고 응답 시간으로 가장 늦은 응답 시간을 지칭

     

    Summary Report

    • 진행했던 테스트에 대한 결과를 한눈에 알 수 있게 표 형식으로 보여줌
    • 최고, 최저 응답 지연시간과 표준편차, 누적 요청 건수 확인
    728x90

    'Network' 카테고리의 다른 글

    Default Route  (0) 2024.05.03
    [Cloud] UDR : User Defined Route  (1) 2024.04.19
    Azure VMSS  (0) 2023.12.29
    [Internship] 개발자 도구 - Network Tab  (1) 2023.12.22
    Socket Programming에 대해  (0) 2023.03.24
Designed by Tistory.