Coding/Back-end

Apache Jmeter 사용방법 | Kafka Producer/Consumer 테스터, 카프카를 다량으로 발송해서 부하테스트 하기

왓츠뉴 whatsnew 2025. 3. 6. 17:17
반응형

✳️ Apache Jmeter 소개&설치

📌 설치

Binaires - zip 파일을 다운받아주세요. 

경로는 상관없어요. 저는 바탕화면에 받았습니다.

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

 

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

 

 

📌 JDK 설치

java 기반으로 동작하기 때문에 필수로 설치해주세요

 

📌 플러그인 라이브러리 설치

jmeter에서 kafka 등 다양한 기능을 활용하려면 플러그인을 설치해야 합니다.

아래 사이트에서 plugins-manager.jar 를 lib/ext 경로에 다운받아주세요.

https://jmeter-plugins.org/install/Install/

 

Install :: JMeter-Plugins.org

Installing Plugins The easiest way to get the plugins is to install Plugins Manager. Then you'll be able to install any other plugins just by clicking a checkbox. If you experience any issues with plugins installation, don't hesitate to ask at Support Foru

jmeter-plugins.org

 

다운받으면 jmeter에서 플러그인을 직접 다운로드/다운그레이드/업데이트 할 수 있습니다.

사이트에서 플러그인을 하나하나 받아서 폴더에 넣는 것 보다, 라이브러리를 받아놓는게 호환 버전을 변경하기 쉬워요

 

 

📌 Apache Jmeter 실행

다운받은 zip 파일의 압축을 풀고 /bin 경로에 들어가서 실행파일로 들어갑니다.

실행파일 경로 : apache-jmeter-5.5/bin/jmeterw.cmd

 

자주 사용하기 편하게 바탕화면에 바로가기로 파일을 복사해놓으면 편해요.

 

📌 필수 플러그인 다운로드

Kafka Produce를 해보기위해 필수로 필요한 플러그인을 다운받아줍니다.

플러그인명 : DI-Kafkameter (1.3 ver)

 

Installed Plugins : 다운받은 플러그인 목록

Availabel Plugins : 다운 받을 수 있는 플러그인 목록

Upgrades : 업데이트 버전이 추가된 플러그인 목록

 

Installed Plugins-Version : 플러그인의 버전을 다운그레이드/업데이트 하고싶을때 이쪽에서 변경 가능

 

📌 Apache Jmeter 폴더 설명

/lib/ext

: 플러그인이 저장되는 곳 (.jar 파일)

/bin

: jmeterw.cmd(실행파일), jmeter.log(로그 파일), jmeter.properties(설정파일 메모장으로 수정 가능한듯),

.jmx(저장해놓은 jmeter 프로세스 파일. jmeter 버전이 업데이트되면 파일이 열리지 않는 경우가 있으니, 업데이트시 백업 필수)

 


✳️ Apache Jmeter 구성방법

DI-KafkaMeter 플러그인으로 Kafka Producer를 구성해보겠습니다.

Http 통신이나, Kafka Consumer 테스트도 가능한데요.

 

저는 가장 많이 활용했던 카프카 전송으로 설명드리겠습니다.

 

📌 기본 구성

Kafka Producer 기본구성

Test Plan

  Random Variable(랜덤값설정)

  Counter(변동값설정)

  Constant Timer(몇 초마다 발송)

  - Thread Group

    - KafkaProducerConfig

    - KafkaProducerSampler

    - View Results Tree(Listener로 그래프나 전송결과 확인)

 

Http 기본구성 (이건 포스트맨이 훨씬 편리하지만..)

Test Plan

  HTTP Header Manager (HTTP 헤더설정)

  Random Variable(랜덤값설정)

  Counter(변동값설정)

  Constant Timer(몇 초마다 발송)

  - Thread Group

    - HTTP Request (HTTP 요청)

    - View Results Tree(Listener로 그래프나 전송결과 확인)

 

📌 Kafka Config (di-kafkameter 1.3ver)

Kafka Brokers, Serializer 등 필수로 설정해야 하는 값들은 위쪽에 입력란이 따로 있습니다.

아래에 Additional 어쩌구 설정은 timeout이나 꼭 필요한 설정이 있는게 아니면 공란으로 두셔도 괜찮아요.

Security도 저는 사용하지 않아서 PLAINTEXT로 두었습니다. SSL을 사용하시는 경우 Security를 패스워드까지 정확하게 작성해주세요.

 

📌 Kafka Sampler (di-kafkameter 1.3ver)

Counter, Random Variable, User Difined Variables 등에서 설정한 파라미터 값들은 ${}로 ""따옴표 안에 넣어서 표현.

실제 kafka 에서 전송했을때 성공한 json 메세지 규격으로 작성해주세요.

딱히 변동되는 값이 없다면, Text로만 Kafka Message에 채워주시면 됩니다.

 

Kafka Message Key, Partition String은 필수값이 아니니 지정되어 있는 경우에만 작성해주세요.

Variable Name 어쩌구는 Config쪽이랑 동일하게 맞춰주셔야 합니다. (jmeter 5.5에는 없는 항목이었으나 정확하게 하고싶었는지 추가된 설정이네요)

 

📌 Thread Group

24시간(86400초)동안 kafka producer를 반복해서 보내는 쓰레드 설정입니다.

3분마다 지연을 줄 건데요. 3분씩 지연은 Constant Timer에서 설정할겁니다.

1️⃣ Number of Threads (Users) 🧑‍💻

설명: 가상의 사용자(쓰레드) 수를 설정. 이 숫자만큼의 동시 사용자가 JMeter에서 요청을 보냅니다.

예시: 10 → 동시에 10명의 사용자가 요청을 보냄

2️⃣ Ramp-Up Period (in seconds) ⏳

설명: 모든 쓰레드가 실행되기까지 걸리는 시간을 설정합니다. 쓰레드가 한 번에 실행되지 않고 서서히 늘어남

계산 방식: Ramp-Up Period / Number of Threads = 각 쓰레드 시작 간격

예시: 10명의 쓰레드, Ramp-Up: 10초 → 1초마다 1명씩 실행

10명의 쓰레드, Ramp-Up: 5초 → 0.5초마다 1명씩 실행

3️⃣ Loop Count 🔁

설명: 각 쓰레드가 요청을 몇 번 반복할지를 결정합니다. 하나의 쓰레드가 요청을 몇 번 수행할지 지정합니다.

예시: 1 → 모든 쓰레드가 요청을 한 번씩만 보냄 / 5 → 모든 쓰레드가 5번씩 요청을 보냄

✅ Infinite 체크 시 : 쓰레드 무한 반복 실행 (테스트 중지할 때까지)

 

✅ Same user on each iteration

설명: 각 반복에서 동일 사용자 유지.쿠키나 세션과 같은 상태 정보를 반복 실행 시 유지할지 여부

체크: 각 반복에서 동일한 사용자가 유지됨, 쿠키/세션/인증토큰 등이 유지되어 실제 로그인 세션이 끊어지지 않음,

로그인 후 세션을 유지해야 하는 경우 활성화

미체크: 각 반복에서 새로운 사용자가 실행되는 것처럼 동작, 테스트할 때 매 반복마다 로그인이 새롭게 이루어지는 경우


✅ Delay Thread creation until needed

설명: 필요할 때까지 스레드 생성 지연. JMeter는 모든 쓰레드를 미리 생성한 후 실행하지만, 이 옵션을 체크하면 필요할 때 동적으로 생성하도록 변경됨

체크: 테스트가 진행될 때마다 필요한 만큼만 쓰레드가 생성됨, 대규모 부하 테스트 시 메모리 사용량을 최적화, 쓰레드가 미리 생성되지 않으므로 초기 부하가 줄어듦

미체크: 테스트 시작 전에 모든 쓰레드를 미리 생성, 초기 부하가 클 수 있음

4️⃣ Specify Thread lifetime

Specify Thread lifetime

설명: 스레드 생명 주기 지정, 쓰레드의 생명 주기를 직접 지정할 수 있는 옵션, 개별 쓰레드의 실행 시간을 조절 가능

Duration (seconds) ⏳

  • 설명: 테스트가 실행될 총 시간을 설정합니다.
  • 의미: 특정 시간 동안만 테스트가 진행됩니다.
  • 예시:
    • 60초로 설정 시 → 60초 동안만 요청을 수행

Startup Delay (seconds) ⏱

  • 설명: 테스트 시작 후, 쓰레드가 실행되기 전 대기 시간을 설정합니다.
  • 의미: 테스트 시작을 지연시키는 역할을 합니다.
  • 예시:
    • 10초로 설정 시, 테스트 시작 후 10초 후부터 쓰레드 실행 시작

📌 Constant Timer

180000초(3분)마다 Kafka Producer를 보내도록 설정하기 위한 파일입니다.

사용하지 않을 때는 파일에대고 우클릭-disable 해두면 jmeter가 인식하지 않아요. 모든파일에 해당되는 내용입니다.

 

📌 Counter

10으로 첫번째값을 시작해서, 10씩 늘어나는 값을 전송하도록 할거에요.

예를들면 첫번째 kafka producer는 10을 보내고, 두번째는 20의 값을 넣어보냅니다.

사용할때는 KafkaProducerMessage의 Message 란에서 ${Exported Variable Name}을 넣어서 사용하세요.

ex) "value" : "${SV_VALUE1}"

 

📌 Random Variable

대충 이런식으로 쓰시면 됩니다.


✳️ Apache Jmeter 실행

상단의 초록색 실행버튼을 누르면 Thread Group에 설정한 쓰레드만큼 Kafka Producer가 전송됩니다.

View Results Tree 리스너에서 성공/실패 여부를 확인하고, kafka가 잘 전송되었는지

아래의 로그(상단우측의 표지판 클릭하면 나옵니다. Options에서 log lever 설정가능합니다) 확인하고

각자 Kafka Consume은 lag을 확인하거나,, DB를 확인하거나,, 해서 전송이 최종적으로 잘 되었는지 확인하시면 됩니다.

 

Kafka Brokers와 Kafka Topic만 잘 설정해주면 쉽게 전송되어서 편하게 쓰고있는 테스터입니다.

jmeter에 대한 자료가 중국사이트 외에는 거의 없어서... 직접 플러그인 다 설치해보고 하나씩 만져보는게

금방 습득하기 쉽습니다. GUI는 잘 만들어져 있어서 대충 만져보다보면 어떤 기능인지 터득되요.

728x90
반응형