Jmeter를 이용한 부하테스트

2 분 소요

JMeter 란?

Apache JMeter는 Java로 작성된 오픈소스 Load Testing Tool 입니다. 원래는 웹 프로그램을 테스트하기 위해 설계되었지만 다른 테스트 기능도 사용할 수 있도록 확장되었습니다.

기능

Apache JMeter는 정적 및 동적 자원, 웹 동적 응용 프로그램 모두에서 성능을 테스트할 수 있습니다.

Apache JMeter의 기능은 다음과 같습니다.

  • 다양한 애플리케이션/서버/프로토콜 테스트 지원
    • Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
    • SOAP / REST Webservices
    • FTP
    • Database via JDBC
    • LDAP
    • Message-oriented middleware (MOM) via JMS
    • Mail - SMTP(S), POP3(S) and IMAP(S)
    • Native commands or shell scripts
    • TCP
    • Java Objects
  • 모든 Java 호환 OS(Linux, Windows, Mac OSX, …) 에서 Command-line mode (Non GUI / headless mode) 로 부하테스트 가능
  • Dashboard report 지원
  • 레코딩 기능을 통한 빠르게 테스트 계획 작성 기능 제공

설치

JMeter는 Java 기반으로 개발되었기 때문에 JDK가 설치 되어있어야 합니다. Jmeter 4.0은 Java 8 또는 Java 9을 지원합니다.

Mac에서 설치

Mac에서 Homebrew를 통해 간단하게 Jmeter를 설치해 보겠습니다.

$ brew install jmeter --with-plugins

--with-plugins 옵션을 추가하면 Jmeter 설치 시 플러그인 까지 설치할 수 있습니다. Jmeter 플러그인을 통해 다양한 기능을 확장할 수 있으므로 추가해 주도록 합니다.

설정

Jmeter을 통해서 부하테스트를 진행하다보면 OutOfMemory 가 자주 발생하기 때문에 HEAP 메모리를 수정해 주도록 합니다.

$ cd /usr/local/Cellar/jmeter/4.0/libexec/bin

jmeter.sh 설정파일에서 다음과 같이 JVM 옵션을 작성해 줍니다.

$ vim jmeter.sh

JVM_ARGS="-Xms512m -Xmx4096m"

구성파일 위치

Homebrew를 통해 JMeter를 설치하기 되면 설치 폴더가 조금씩 다릅니다.

항목 표준 Homebrew
Plugins folder /lib/ext /usr/local/Cellar/jmeter/4.0/libexec/lib/ext
Library folder for plugin dependencies /lib/ /usr/local/Cellar/jmeter/4.0/libexec/lib/
Configuration folder /bin /usr/local/Cellar/jmeter/4.0/libexec/bin/

실행

Homebrew를 통해 JMeter 설치가 완료하였다면 터미널에 jmeter 명령어를 입력하면 JMeter 애플리케이션이 GUI모드로 실행됩니다.

$ jmeter
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================

다음과 같이 GUI모드로 실행된 것을 확인할 수 있습니다.

부하테스트 하기

JMeter는 GUI 모드를 지원하지만 실제로 부하테스트를 진행할 때는 Non-GUI로 진행해야 합니다. 부하테스트의 진행하다 보면 Target 서버 뿐만 아니라 Agent에도 부하가 발생하기 마련입니다. Agent에서 동작하는 JMeter를 Non-GUI 모드로 실행하여 보다 정확한 테스트 결과 도출할 수 있습니다.

부하테스트 실행

$ jmeter -n -t TestPlanFile [-l ResultFileName] [-j LogFile] -e -o [Path to output folder]

JMeter 실행 옵션의 설명은 다음과 같습니다.

  • -n: Non-GUI Mode로 실행
  • -t: 테스트 계획 설정 파일인 JMX를 지정
  • -l: 로그 샘플 결과파일은 JTL을 지정
  • -j: JMeter 실행 로그 파일 지정

댓글남기기