동시성 테스트를 위한 Jmeter 사용법

2024. 10. 18. 12:42·Jmeter

일단 Jmeter란?

Apache JMeter™ 애플리케이션은 오픈 소스 소프트웨어로, 기능적 동작을 로드 테스트하고 성능을 측정하도록 설계된 100% 순수 Java 애플리케이션입니다. 원래는 웹 애플리케이션을 테스트하기 위해 설계되었지만 그 이후로 다른 테스트 기능으로 확장되었습니다.

-Apache Jmeter 공식 홈페이지-

https://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 oth

jmeter.apache.org

 

일단 Jmeter 설치부터하면

 

-Window-

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

 

Apache JMeter - Download Apache JMeter

Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava

jmeter.apache.org

해당 파일에 들어가서 zip파일 받고 bin폴더 안에서 Jmeter를 실행시켜주면 된다.

 

Java 설치는 필수!

 

-Mac OS-

맥은 윈도우 처럼 파일 받아서 구동이 가능하지만, 터미널을 통해 간단히 설치가 가능하다.(단 homebrew 설치는 필수!)

https://brew.sh/

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

homebrew 설치 안되어 있으면 해당 공식 사이트가서 순서대로 터미널에서 명령어를 치면 된다.

 

-터미널을 통해 Jmeter 설치-

brew install jmeter

 

해당 명령어만 치면 설치가 가능하다.

 

그리고 jmeter가 있는 파일을 찾아 실행시키면된다.

이게 직접 

open /usr/local/bin/jmeter

이런식으로 찾아서 실행시키는 경우가 있는데

 

몇몇분들은 

 jmeter

 

이것만 치면 실행이 가능할것으로 보인다. (필자는 해당 명령어만 치면 실행이 가능하였다.)

 

해당 로그가 뜨면서 Jmete 실행이 된다.

Jmeter 메인 화면

Jmeter 실행된 모습

 

Test Plan -> Add -> Thread (Users) -> Thread Group 순서로 그룹을 만든다. (포스트맨 기준으로 컬랙션에 해당한다.)

 

 

다음은 HTTP 요청할 샘플러들 만들어야 한다.

 

Thread Group -> Add -> Sampler -> HTTP Request

 

 

basic 기준을 보면 프로토콜,  서버이름 or ip, 포트넘버 ,path, 엔코딩까지 있다.

 

HTTP Request 구성

  • Server Name or IP: 요청할 서버의 도메인 또는 IP를 입력 (예: www.example.com, 로컬로 할경우 localhost 기입)
  • Port Number: 포트 번호를 설정 (HTTP는 80, HTTPS는 443)
  • HTTP Request > Path: 요청 경로를 입력 (예: /api/data)
  • Method: GET, POST 등 요청 방식을 선택
  • 필요하다면 Parameters 탭에서 요청에 추가할 매개변수를 설정이 가능하다.
  • Content encoding은 내용을 적을때 각 사용 언어가 깨지지 않게 해준다(한국어는 UTF-8)

 

그리고 Thread Group 설정에 가서

사용자의 수 (Thread), Ramp-Up Period (스레드가 시작되는 간격), 그리고 Loop Count (테스트 반복 횟수)를 설정할 수 있습니다.

 

Thread Group은 사용자의 동작을 시뮬레이션하는 핵심 요소이다. 이를 통해 테스트에 참여하는 사용자 수, 요청이 이루어지는 빈도, 실행 시간 등을 설정할 수 있다.

 

Thread Group 설정

 

Thread Group의 속성은 JMeter 테스트의 부하(트래픽)를 설정하는 중요한 부분이다. 

 

(1) Number of Threads (Users)

 

• 설명: 요청을 보내는 가상의 사용자 수를 정의

• 사용 예: 100명의 사용자가 동시 접속하는 상황을 시뮬레이션하려면 Number of Threads를 100으로 설정합니다.

 

(2) Ramp-Up Period (in seconds)

 

• 설명: 모든 스레드를 실행하는 데 걸리는 시간을 설정합니다. 즉, 지정된 사용자 수가 모두 실행되기까지의 시간을 초 단위로 설정

• 사용 예: Number of Threads가 100이고 Ramp-Up Period가 10이라면, JMeter는 10초 동안 100명의 사용자를 실행. 즉, 1초에 10명의 사용자가 생성.

 

(3) Loop Count

 

• 설명: 각 사용자(Thread)가 수행할 요청 횟수를 설정합.

• Forever 옵션을 체크하면 무한히 반복할 수 있다.

• 사용 예: Loop Count를 10으로 설정하면 각 스레드가 10번씩 HTTP 요청을 실행한다.

 

(4) Scheduler (스케줄러 활성화)

 

• 설명: 일정한 시간 동안 테스트를 실행하고 싶다면, 이 옵션을 활성화하여 아래에서 테스트 시작 시간, 종료 시간, 지속 시간 등을 설정할 수 있다.

• Duration: 테스트 실행 시간을 설정 (초 단위).

• Startup Delay: 테스트 시작 전 지연 시간을 설정.

• 사용 예: 테스트를 5분 동안만 실행하고 싶다면, Duration을 300초로 설정할 수 있다.

 

일단 테스트로는 

Number of Threads: 100

Ramp-Up Period: 10

Loop Count: 2

 

 

이렇게 세팅하고 테스트 해볼려고 한다.

 

 

간단하게 조회 메서드로  테스트를 실행

 

- Jmeter 작동할때 테스트하고 싶은 서버를 미리 실행시키고 Jmeter를 실행시켜야 한다.

 

 

각각 알맞게 넣어준다.

만일 도메인으로 넣어줄려고 하면 https://www.example.com/blog이런식이면

 

Protocol: https

Servername or IP: www.example.com 

Path: /blog

로 넣어주면 된다.

 

그리고 실행 시켰을때 결과를 봐야 하므로 

 

 

 

HTTP Request -> Add -> Listener 들어가서 

 

View Result Tree

Aggregate Graph

View Results in Table

을 추가해주면 된다. 만일 추가적으로 Listener가 필요하면 원하는데로 추가하면 된다.

 

해당 리스너는 어떤 기능을 하나?

 

View Results Tree

 

  • 기능: 요청과 응답의 세부 정보를 시각적으로 확인할 수 있는 리스너
  • 주요 사용법:
  • HTTP 요청의 세부 정보: 요청을 보낸 URL, 요청 헤더, 요청 본문 등을 확인
  • 응답 결과: 서버에서 반환된 응답 코드, 응답 시간, 응답 본문, 응답 헤더를 확인
  • 디버깅: 요청이나 응답에서 문제가 발생했을 경우, 이를 확인하여 문제를 진단하는 데 유용

 

Aggregate Graph

 

  • 기능: 테스트 실행 결과를 그래픽으로 시각화하여 성능 메트릭을 한눈에 파악할 수 있는 리스너
  • 주요 사용법:
  • 성능 요약: 평균 응답 시간, 최대 응답 시간, 최소 응답 시간, 요청 수, 에러 수 등을 그래프로 시각화
  • 시간 경과에 따른 성능 추세: 요청이 처리되는 시간에 따라 성능의 변화를 시각적으로 보여준다
  • 비교 분석: 여러 테스트 실행 간의 성능을 비교하기 쉽게 함

 

View Results in Table

 

  • 기능: 요청과 응답의 결과를 표 형식으로 표시하는 리스너
  • 주요 사용법:
  • 요청 및 응답 요약: 각 요청에 대한 상태, 응답 코드, 응답 시간 등의 정보를 표 형태로 정리하여 보여준다.
  • 다양한 필터링 및 정렬: 특정 조건에 따라 결과를 필터링하거나 정렬하여 필요한 정보를 쉽게 찾을 수 있다.
  • 전체 결과 요약: 여러 요청의 결과를 한눈에 확인할 수 있어, 전체적인 테스트 성과를 분석하는 데 유용하다.

 

 

성공된걸 확인했고 표와 그래프를 보면

 

 

여기서 인증 권한을 주어야 한다면

 

HTTP Request -> Add -> Config Element -> HTTP Header Manager를 생성하면 된다.

 

만일 권한을 넣어야 하거나 그외 추가적으로 헤더에 넣을게 필요하면 HTTP Header Manager에서 값을 주입하면 된다.

 

 

만일 등록이나 수정할떄 RequestBody로 해야될 경우 Body Data에 가서 Request에 맞게 작성하면 된다.

 

환경변수가 필요할 경우 

 

HTTP Request -> Add -> Config Element -> User Defined Variables 에서 설정이 가능하다.

반응형

'Jmeter' 카테고리의 다른 글

포트가 겹쳐 생긴 403에러에 관한 문제  (0) 2024.10.29
'Jmeter' 카테고리의 다른 글
  • 포트가 겹쳐 생긴 403에러에 관한 문제
wanduek
wanduek
차근차근 쌓아가는 지식
  • wanduek
    완득님의 블로그
    wanduek
  • 전체
    오늘
    어제
    • 분류 전체보기 (194)
      • Onboarding (0)
      • 아티클 (0)
      • SQL 정리 (20)
      • 웹개발 기초정리(프엔) (9)
      • (Java)코테연습 (27)
      • 미니 프로젝트 (9)
        • 자기소개 웹페이지 (5)
        • 수강생 관리 프로그램(Java) (4)
      • GitHub 오류 및 명령어 정리 (7)
      • Java 문법정리 (Array부터) (17)
      • Java로 이용한 기능 (2)
      • Web지식 (12)
        • web3 (6)
        • 네트워크 (6)
      • 인텔리제이 오류 대처 방법 (1)
      • Computer Science (7)
      • Spring (38)
        • 미니 프로젝트(배달) (2)
        • Spring 트러블 슈팅 (3)
        • QueryDSL, JPQL (3)
        • 미니 프로젝트(뉴스피드) (5)
        • 미니 프로젝트(Trello) (2)
      • 개발자 밋업 (1)
      • Docker (2)
      • Redis (1)
      • AWS (6)
        • AWS 트러블 슈팅 (2)
      • Jmeter (2)
      • 우리 지금 만나 (12)
      • Kafka (1)
      • RabbitMQ (2)
        • 트러블 슈팅 (1)
      • STOMP (2)
      • WebSocket (3)
        • 트러블 슈팅 (2)
      • Node.js (2)
      • Elastic Search (2)
      • Nginx (1)
      • 퍼블엘 (2)
      • openresty (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQL
    json
    백앤드개발자 #초심자
    fetch
    github
    git
    ㅏㄷ
    groupby
    jquery
    where
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
wanduek
동시성 테스트를 위한 Jmeter 사용법
상단으로

티스토리툴바