Jmeter를 이용한 부하테스트
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 | /usr/local/Cellar/jmeter/4.0/libexec/lib/ext | |
Library folder for plugin dependencies | /usr/local/Cellar/jmeter/4.0/libexec/lib/ | |
Configuration folder | /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 실행 로그 파일 지정
댓글남기기