1. 시작하기

1.0 개요

JMeter를 사용할 때 일반적으로 다음 프로세스를 따릅니다.

1.0.1 테스트 계획 작성

그렇게 하려면 GUI 모드에서 JMeter를 실행합니다.
그런 다음 브라우저에서 애플리케이션을 기록하거나 기본 애플리케이션에서 기록하도록 선택할 수 있습니다. 파일  →  템플릿...  →  녹음 메뉴를 사용할 수 있습니다 .

계획을 수동으로 작성할 수도 있습니다. 주요 개념을 이해하려면 이 문서 를 읽으십시오 .

다음 옵션 중 하나를 사용하여 디버그할 수도 있습니다.
  • 실행  →  일시 중지 없이 시작
  • 실행  →  시작
  • 스레드 그룹 에서 유효성 검사

보기 결과 트리 렌더러 또는 테스터(CSS/JQUERY, JSON, Regexp, XPath). 테스트 계획을 작성할 때 모범 사례
를 따르십시오 .

1.0.2 부하 테스트 실행

테스트 계획이 준비되면 부하 테스트를 시작할 수 있습니다. 첫 번째 단계는 JMeter를 실행할 인젝터를 구성하는 것입니다. 다른 부하 테스트 도구에는 다음이 포함됩니다.

  • CPU, 메모리 및 네트워크 측면에서 올바른 머신 크기 조정
  • OS 튜닝
  • Java 설정: JMeter에서 지원하는 최신 버전의 Java를 설치해야 합니다.
  • Java 힙 크기를 늘리십시오 . 기본적으로 JMeter는 1GB의 힙으로 실행되며 테스트에 충분하지 않을 수 있으며 테스트 계획과 실행하려는 스레드 수에 따라 다릅니다.
모든 것이 준비되면 CLI 모드(이전에는 비 GUI 모드 라고 함 )를 사용하여 부하 테스트를 위해 실행합니다.
GUI 모드를 사용하여 부하 테스트를 실행하지 마십시오!

CLI 모드를 사용하여 결과가 포함된 CSV(또는 XML) 파일을 생성하고 JMeter 가 부하 테스트가 끝날 때 HTML 보고서 를 생성하도록 할 수 있습니다. JMeter는 기본적으로 실행되는 동안 부하 테스트 요약을 제공합니다. 백엔드 리스너 를 사용하여 테스트 중에 실시간 결과
를 얻을 수도 있습니다 .

1.0.3 부하 테스트 분석

부하 테스트가 완료되면 HTML 보고서를 사용하여 부하 테스트를 분석할 수 있습니다.

1.0.4 시작합시다

JMeter 사용을 시작하는 가장 쉬운 방법은 먼저 최신 프로덕션 릴리스 를 다운로드하여 설치하는 것입니다. 이 릴리스에는 웹(HTTP/HTTPS), FTP, JDBC, LDAP, Java, JUnit 등과 같은 대부분의 테스트 유형을 빌드하고 실행하는 데 필요한 모든 파일이 포함되어 있습니다.

JDBC 테스트를 수행하려면 공급업체에서 제공하는 적절한 JDBC 드라이버가 필요합니다. JMeter는 JDBC 드라이버와 함께 제공되지 않습니다.

JMeter는 JMS API jar를 포함하지만 JMS 클라이언트 구현은 포함하지 않습니다. JMS 테스트를 실행하려면 JMS 공급자로부터 적절한 jar를 다운로드해야 합니다.

추가 jar 설치에 대한 자세한 내용은 JMeter 클래스 경로 섹션을 참조하십시오.

그런 다음 JMeter를 시작 하고 사용자 가이드의 테스트 계획 작성 섹션으로 이동하여 JMeter 기본 사항(예: 요소 추가 및 제거)에 익숙해집니다.

마지막으로 특정 유형의 테스트 계획을 작성하는 방법에 대한 적절한 섹션을 살펴보십시오. 예를 들어, 웹 애플리케이션 테스트에 관심이 있다면 웹 테스트 계획 작성 섹션을 참조하십시오 . 다른 특정 테스트 계획 섹션은 다음과 같습니다.

JMeter 테스트 계획을 구축하고 실행하는 데 익숙해지면 테스트 계획을 더 잘 제어할 수 있는 다양한 구성 요소(타이머, 리스너, 어설션 및 기타)를 살펴볼 수 있습니다.

1.1 요구 사항

JMeter를 사용하려면 컴퓨팅 환경이 몇 가지 최소 요구 사항을 충족해야 합니다.

1.1.1 자바 버전

JMeter는 Java 8 이상과 호환됩니다. 보안 및 성능상의 이유로 주 버전의 최신 부 버전을 설치하는 것이 좋습니다.

JMeter는 표준 Java API만 사용하므로 JRE 구현 문제로 인해 JRE가 JMeter를 실행하지 못하는 경우 버그 보고서를 제출하지 마십시오.

JRE를 사용할 수도 있지만 HTTPS의 기록은 JDK를 설치하는 것이 좋지만 JMeter는 JDK의 keytool 유틸리티가 필요합니다.

1.1.2 운영 체제

JMeter는 100% Java 애플리케이션이며 호환되는 Java 구현이 있는 모든 시스템에서 올바르게 실행되어야 합니다.

JMeter로 테스트된 운영 체제는 JMeter 위키 의 이 페이지 에서 볼 수 있습니다.

귀하의 OS가 위키 페이지에 나열되지 않더라도 JVM이 호환되는 경우 JMeter가 실행되어야 합니다.

1.2 선택

JMeter 개발을 계획하고 있다면 아래 나열된 하나 이상의 선택적 패키지가 필요합니다.

1.2.1 자바 컴파일러

JMeter 소스를 빌드하거나 JMeter 플러그인을 개발하려면 완전히 호환되는 JDK 8 이상이 필요합니다.

1.2.2 SAX XML 파서

JMeter는 Apache의 Xerces XML 파서 와 함께 제공됩니다 . JMeter에게 다른 XML 파서를 사용하도록 지시하는 옵션이 있습니다. 그렇게 하려면 JMeter의 classpath 에 타사 파서용 클래스를 포함 하고 파서 구현의 전체 클래스 이름으로 jmeter.properties 파일을 업데이트하십시오 .

1.2.3 이메일 지원

JMeter에는 광범위한 이메일 기능이 있습니다. 테스트 결과에 따라 이메일을 보낼 수 있으며 POP3(S)/IMAP(S) 샘플러가 있습니다. 또한 SMTP(S) 샘플러가 있습니다.

1.2.4 SSL 암호화

SSL 암호화(HTTPS)를 사용하여 웹 서버를 테스트하려면 Sun Java 1.4 이상의 경우와 같이 JMeter에서 SSL 구현이 제공되어야 합니다. Java 버전에 SSL 지원이 포함되어 있지 않으면 외부 구현을 추가할 수 있습니다. JMeter의 클래스 경로 에 필요한 암호화 패키지를 포함합니다 . 또한 system.properties 를 업데이트하여 SSL 공급자를 등록합니다.

JMeter HTTP는 기본적으로 프로토콜 수준 TLS로 설정됩니다. 이것은 jmeter.properties 또는 user.properties 에서 JMeter 속성 https.default.protocol 을 편집하여 변경할 수 있습니다 .

JMeter HTTP 샘플러는 유효 기간 등에 관계없이 신뢰할 수 있는지 여부에 관계없이 모든 인증서를 수락하도록 구성되어 있습니다. 이는 테스트 서버에서 최대한의 유연성을 허용하기 위한 것입니다.

서버에 클라이언트 인증서가 필요한 경우 이를 제공할 수 있습니다.

인증서를 더 잘 제어할 수 있는 SSL Manager 도 있습니다.

JMeter 프록시 서버(아래 참조)는 HTTPS(SSL) 기록을 지원합니다.

SMTP 샘플러는 선택적으로 로컬 신뢰 저장소를 사용하거나 모든 인증서를 신뢰할 수 있습니다.

1.2.5 JDBC 드라이버

JDBC 테스트를 수행하려면 데이터베이스 공급업체의 JDBC 드라이버를 클래스 경로 에 추가해야 합니다. 파일이 zip이 아닌 jar 파일인지 확인하십시오.

1.2.6 JMS 클라이언트

JMeter는 이제 Apache Geronimo의 JMS API를 포함하므로 JMS 공급자에서 적절한 JMS 클라이언트 구현 jar를 추가하기만 하면 됩니다. 자세한 내용은 해당 설명서를 참조하십시오. JMeter Wiki 에 대한 정보도 있을 수 있습니다 .

1.2.7 ActiveMQ JMS용 라이브러리

jar activemq-all-XXXjar 를 클래스 경로에 추가해야 합니다(예: lib/ 디렉토리에 저장).

자세한 내용은 ActiveMQ 초기 구성 페이지 를 참조하십시오.

추가 jar 설치에 대한 자세한 내용 은 JMeter 클래스 경로 섹션을 참조하세요.

1.3 설치

대부분의 사용자는 최신 릴리스 를 실행하는 것이 좋습니다 .

릴리스 빌드를 설치하려면 JMeter를 설치하려는 디렉토리에 zip/tar 파일의 압축을 풉니다. JRE/JDK를 올바르게 설치하고 JAVA_HOME 환경 변수를 설정했다면 더 이상 수행할 작업이 없습니다.

디렉토리 경로에 공백이 있으면 문제가 있을 수 있습니다(특히 클라이언트-서버 모드에서).

설치 디렉토리 구조는 다음과 같아야 합니다(여기서 XY 는 버전 번호).

아파치-제이미터-XY
아파치-jmeter-XY/bin
아파치-jmeter-XY/docs
아파치-jmeter-XY/엑스트라
아파치-jmeter-XY/lib/
아파치-jmeter-XY/lib/ext
아파치-jmeter-XY/lib/junit
apache-jmeter-XY/라이센스
아파치-jmeter-XY/printable_docs
원하는 경우 상위 디렉토리(예: apache-jmeter-XY )의 이름을 변경할 수 있지만 하위 디렉토리 이름은 변경하지 마십시오.

1.4 JMeter 실행


JMeter를 실행하려면 jmeter.bat (Windows의 경우) 또는 jmeter (Unix의 경우) 파일을 실행하십시오. 이러한 파일은 bin 디렉토리에 있습니다. 잠시 후 JMeter GUI가 나타납니다.

GUI 모드는 테스트 스크립트 생성에만 사용해야 하며, CLI 모드(NON GUI)는 부하 테스트에 사용해야 합니다.

bin 디렉토리에는 유용할 수 있는 몇 가지 추가 스크립트가 있습니다. Windows 스크립트 파일(.CMD 파일에는 Win2K 이상이 필요함):

jmeter.bat
JMeter 실행(기본적으로 GUI 모드에서)
jmeterw.cmd
Windows 셸 콘솔 없이 JMeter 실행(기본적으로 GUI 모드)
jmeter-n.cmd
CLI 모드 테스트를 실행하려면 여기에 JMX 파일을 드롭하십시오.
jmeter-nr.cmd
원격으로 CLI 모드 테스트를 실행하려면 여기에 JMX 파일을 드롭하십시오.
jmeter-t.cmd
GUI 모드에서 로드하려면 여기에 JMX 파일을 드롭합니다.
jmeter-server.bat
서버 모드에서 JMeter 시작
미러 서버.cmd
CLI 모드에서 JMeter 미러 서버를 실행합니다.
종료.cmd
Shutdown 클라이언트를 실행하여 CLI 모드 인스턴스를 정상적으로 중지
stoptest.cmd
Shutdown 클라이언트를 실행하여 CLI 모드 인스턴스를 갑자기 중지하십시오.
특수 이름 LAST 는 jmeter-n.cmd , jmeter-t.cmdjmeter-nr.cmd 와 함께 사용할 수 있으며 대화식으로 실행된 마지막 테스트 계획을 의미합니다.

JMeter에 대한 JVM 설정을 사용자 정의하는 데 사용할 수 있는 몇 가지 환경 변수가 있습니다. 이를 설정하는 쉬운 방법 은 bin 디렉토리 에 setenv.bat 라는 파일을 만드는 것 입니다. 이러한 파일은 다음과 같을 수 있습니다.

rem 이것은 bin\setenv.bat의 내용입니다.
rem bin\jmeter.bat에 의해 호출됩니다.

JVM_ARGS=-Xms1024m -Xmx1024m -Dpropname=값 설정

JVM_ARGS 는 jmeter.bat 스크립트 에서 JVM 설정을 재정의하는 데 사용할 수 있으며 JMeter 를 시작할 때 설정됩니다. 예:

jmeter -t test.jmx …

다음 환경 변수를 정의할 수 있습니다.

DDRAW
직접 그리기 사용에 영향을 주는 JVM 옵션(예: -Dsun.java2d.ddscale=true ) . 기본값은 비어 있습니다.
GC_ALGO
JVM 가비지 수집기 옵션. 기본값은 -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20입니다.
더미
JMeter를 시작할 때 사용되는 JVM 메모리 설정입니다. 기본값은 -Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m입니다.
JMETER_BIN
JMeter bin 디렉토리( \ 로 끝나야 함). setenv.bat 가 호출 되면 값이 추측됩니다 .
JMETER_COMPLETE_ARGS
설정된 경우 JVM_ARGSJMETER_OPTS 만 사용됨을 나타냅니다. HEAPGC_ALGO 와 같은 다른 모든 옵션 은 무시됩니다. 기본값은 비어 있습니다.
JMETER_HOME
설치 디렉토리. jmeter.bat 의 위치에서 추측됩니다.
JMETER_LANGUAGE
사용 언어를 지정하는 Java 런타임 옵션. 기본값: -Duser.language="en" -Duser.region="EN"
JM_런치
java.exe (기본값) 또는 javaw.exe 와 같은 Java 실행 파일의 이름
JVM_ARGS
JMeter를 시작할 때 사용할 Java 옵션입니다. 이것들은 java 명령에 마지막으로 추가됩니다. 기본값은 비어 있습니다.

Un*x 스크립트 파일; 대부분의 Linux/Unix 시스템에서 작동해야 합니다.

제이미터
JMeter를 실행합니다(기본적으로 GUI 모드에서). 모든 JVM에서 작동하지 않을 수 있는 일부 JVM 설정을 정의합니다.
jmeter-서버
서버 모드에서 JMeter 시작(적절한 매개변수로 jmeter 스크립트 호출)
jmeter.sh
매우 기본적인 JMeter 스크립트(메모리 설정과 같은 JVM 옵션을 적용해야 할 수도 있음).
미러 서버.sh
CLI 모드에서 JMeter 미러 서버를 실행합니다.
종료.sh
Shutdown 클라이언트를 실행하여 CLI 모드 인스턴스를 정상적으로 중지
stoptest.sh
Shutdown 클라이언트를 실행하여 CLI 모드 인스턴스를 갑자기 중지하십시오.

JMeter에서 사용하는 JVM을 구성하려면 몇 가지 환경 변수를 설정해야 할 수 있습니다. 이러한 변수는 jmeter 스크립트를 시작하는 셸에서 직접 설정할 수 있습니다 . 예를 들어 변수 JVM_ARGS 를 설정하면 대부분의 사전 정의된 설정이 무시됩니다.

JVM_ARGS="-Xms1024m -Xmx1024m" jmeter -t test.jmx [기타]

스크립트의 HEAP 설정을 무시합니다.

이러한 변수를 영구적으로 설정하려면 bin 디렉토리 의 setenv.sh 라는 파일에 배치할 수 있습니다 . 이 파일은 jmeter 스크립트 를 호출하여 JMeter를 실행할 때 제공됩니다 . bin/setenv.sh 의 예 는 다음과 같습니다.

# bin/setenv.sh 파일입니다.
# bin/jmeter에 의해 소싱됩니다.

# 기본값보다 더 큰 힙을 사용하지만 더 작은 메타스페이스를 사용합니다.
내보내기 HEAP="-Xms1G -Xmx1G -XMaxMetaspaceSize=192m"

# OS에서 로케일을 추측해 봅니다. 가치로서의 공간은 의도적입니다!
내보내기 JMETER_LANGUAGE=" "

다음 환경 변수를 정의할 수 있습니다.

GC_ALGO
JVM 가비지 수집 알고리즘을 지정하는 Java 런타임 옵션입니다. 기본값은 -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20입니다.
더미
JMeter가 시작될 때 사용되는 메모리 관리를 위한 Java 런타임 옵션입니다. 기본값은 -Xms1g -Xmx1g -X:MaxMetaspaceSize=256m입니다.
자바_홈
Java Development Kit 설치를 가리켜야 합니다. " debug " 인수 로 실행하는 데 필요합니다 . 일부 OS에서는 JMeter가 JVM의 위치를 ​​추측하기 위해 최선을 다할 것입니다.
JMETER_COMPLETE_ARGS
설정된 경우 JVM_ARGSJMETER_OPTS 만 사용됨을 나타냅니다. HEAPGC_ALGO 와 같은 다른 모든 옵션 은 무시됩니다. 기본값은 비어 있습니다.
JMETER_HOME
JMeter 설치 디렉토리를 가리킬 수 있습니다. 비어 있으면 jmeter 스크립트를 기준으로 설정됩니다.
JMETER_LANGUAGE
사용 언어를 지정하는 Java 런타임 옵션. 기본값은 -Duser.language=en -Duser.region=EN입니다.
JMETER_OPTS
JMeter가 시작될 때 사용되는 Java 런타임 옵션입니다. 운영 체제에 대한 특수 옵션은 JMeter에 의해 추가될 수 있습니다.
JRE_HOME
Java 런타임 설치를 가리켜야 합니다. 비어 있는 경우 기본값은 JAVA_HOME 입니다. JRE_HOMEJAVA_HOME 이 모두 비어 있으면 JMeter는 JAVA_HOME을 추측하려고 시도 합니다 . JRE_HOMEJAVA_HOME 이 모두 설정되어 있으면 JAVA_HOME 이 사용됩니다.
JVM_ARGS
JMeter를 시작할 때 사용할 Java 옵션입니다. JMETER_OPTS 이전 과 다른 JVM 옵션 뒤에 추가됩니다 . 기본값은 비어 있습니다.

1.4.1 JMeter의 클래스 경로

JMeter는 다음 디렉토리에 있는 jar에서 클래스를 자동으로 찾습니다.

JMETER_HOME/lib
유틸리티 항아리에 사용
JMETER_HOME/lib/ext
JMeter 구성 요소 및 플러그인에 사용

새로운 JMeter 구성 요소를 개발했다면 이를 jar 파일로 만들고 JMeter의 lib/ext 디렉토리에 복사해야 합니다. JMeter는 여기에 있는 모든 jar에서 JMeter 구성 요소를 자동으로 찾습니다. 플러그인에서 사용하는 유틸리티 jar 또는 종속성 jar에 lib/ext 를 사용하지 마십시오 . JMeter 구성 요소 및 플러그인 전용입니다.

JMeter 플러그인 jar를 lib/ext 디렉토리에 넣지 않으려면 jmeter.properties 에서 search_paths 속성을 정의하십시오 .

유틸리티 및 종속성 jar(라이브러리 등)은 lib 디렉토리에 배치할 수 있습니다.

이러한 jar를 lib 디렉토리에 넣지 않으려면 jmeter.properties 에 user.classpath 또는 plugin_dependency_paths 속성을 정의하십시오 . 차이점에 대한 설명은 아래를 참조하세요.

JDBC, JMS 구현 및 JMeter 코드에 필요한 기타 지원 라이브러리와 같은 다른 jar 는 lib/ext 디렉토리 가 아닌 lib 디렉토리에 배치 하거나 user.classpath 에 추가해야 합니다 .

JMeter는 .zip 이 아닌 .jar 파일 만 찾습니다 .

$JAVA_HOME/jre/lib/ext 에 유틸리티 Jar 파일을 설치 하거나 jmeter.properties 에서 user.classpath 속성을 설정할 수도 있습니다 .

CLASSPATH 환경 변수 를 설정해 도 효과가 없습니다. 이는 JMeter가 " java -jar "로 시작되고 java 명령이 -jar 을 사용할 때 CLASSPATH 변수와 -classpath / -cp 옵션을 자동으로 무시 하기 때문 입니다.

이것은 JMeter뿐만 아니라 모든 Java 프로그램에서 발생합니다.

1.4.2 템플릿에서 테스트 계획 만들기

기존 템플릿에서 새 테스트 계획을 만들 수 있습니다.

이렇게 하려면 메뉴 파일  →  템플릿… 또는 템플릿 아이콘을 사용합니다.

템플릿 아이콘 항목
템플릿 아이콘 항목

팝업이 나타나면 목록에서 템플릿을 선택할 수 있습니다.

템플릿 팝업
템플릿 팝업

일부 템플릿에는 사용자의 매개변수 입력이 필요할 수 있습니다. 이 경우 생성 버튼을 클릭하면 다음과 같은 새 창이 나타납니다.

매개변수 창
매개변수 창

매개변수 설정이 완료되면 확인 버튼을 클릭하면 템플릿이 생성됩니다.

각 템플릿에 대한 문서는 템플릿에서 테스트 계획이 생성되면 수행할 작업을 설명합니다.

여기 문서에 따라 고유한 템플릿을 만들 수 있습니다 .

1.4.3 프록시 뒤에서 JMeter 사용하기

방화벽/프록시 서버 뒤에서 테스트하는 경우 JMeter에 방화벽/프록시 서버 호스트 이름과 포트 번호를 제공해야 할 수도 있습니다. 이렇게 하려면 다음 매개변수를 사용하여 명령줄에서 jmeter[.bat] 파일을 실행하십시오.

-이자형
[사용할 프록시 구성표 - 선택 사항 - http가 아닌 경우]
-시간
[프록시 서버 호스트 이름 또는 IP 주소]
-피
[프록시 서버 포트]
-N
[비프록시 호스트](예: *.apache.org|localhost )
-유
[프록시 인증을 위한 사용자 이름 - 필요한 경우]
-ㅏ
[프록시 인증을 위한 비밀번호 - 필요한 경우]
:
jmeter -E https -H my.proxy.server -P 8000 -u 사용자 이름 -a 암호 -N localhost

--proxyScheme , --proxyHost , --proxyPort , --username--password 를 매개변수 이름으로 사용할 수도 있습니다 .

명령줄에 제공된 매개변수는 시스템의 다른 사용자가 볼 수 있습니다.

프록시 체계가 제공되면 JMeter는 다음 시스템 속성을 설정합니다.

  • http.proxyScheme

프록시 호스트와 포트가 제공되면 JMeter는 다음 시스템 속성을 설정합니다.

  • http.proxyHost
  • http.proxyPort
  • https.proxyHost
  • https.proxyPort

프록시에 사용되는 사용자 및 암호는 시스템 속성 http.proxyUserhttp.proxyUser 에서 제공할 수 있습니다 . HTTP 샘플러에 설정된 위의 인수 또는 값에 의해 재정의됩니다.

비프록시 호스트 목록이 제공되면 JMeter는 다음 시스템 속성을 설정합니다.

  • http.nonProxyHosts
  • https.nonProxyHosts

따라서 http 및 https 프록시를 모두 설정하지 않으려면 명령줄 매개변수를 사용하는 대신 system.properties 에서 관련 속성을 정의할 수 있습니다.

HTTP 요청 기본값 구성 또는 HTTP 요청 샘플러 요소 를 사용하여 테스트 계획에서 프록시 설정을 정의할 수도 있습니다 .

JMeter에는 자체 내장 프록시 서버인 HTTP(S) 테스트 스크립트 레코더 도 있습니다. 이것은 HTTP 또는 HTTPS 브라우저 세션을 기록하는 데만 사용됩니다. JMeter가 HTTP 또는 HTTPS 요청 자체를 할 때 사용되는 위에서 설명한 프록시 설정과 혼동하지 마십시오.

1.4.4 CLI 모드(명령줄 모드를 NON GUI 모드라고 함)

부하 테스트의 경우 최적의 결과를 얻으려면 이 모드(GUI 제외)에서 JMeter를 실행해야 합니다. 이렇게 하려면 다음 명령 옵션을 사용하십시오.

-N
이것은 JMeter가 cli 모드에서 실행되도록 지정합니다.
-티
[테스트 계획을 포함하는 JMX 파일의 이름].
-엘
[샘플 결과를 기록할 JTL 파일의 이름].
-제이
[JMeter 실행 로그 파일 이름].
-아르 자형
JMeter 속성 " remote_hosts " 로 지정된 서버에서 테스트를 실행합니다.
-아르 자형
[원격 서버 목록] 지정된 원격 서버에서 테스트 실행
-g
[CSV 파일 경로] 보고서 대시보드만 생성
-이자형
부하 테스트 후 보고서 대시보드 생성
-영형
부하 테스트 후 보고서 대시보드를 생성할 출력 폴더입니다. 폴더가 존재하지 않거나 비어 있어야 합니다.

또한 스크립트를 사용하여 선택적 방화벽/프록시 서버 정보를 지정할 수 있습니다.

-시간
[프록시 서버 호스트 이름 또는 IP 주소]
-피
[프록시 서버 포트]
예시
jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000

jmeterengine.stopfail.system.exit 속성 이 true (기본값은 false ) 로 설정 되면 JMeter는 모든 스레드를 중지할 수 없는 경우 System.exit(1) 을 호출 합니다. 일반적으로 이것은 필요하지 않습니다.

1.4.5 서버 모드

분산 테스트 의 경우 원격 노드에서 서버 모드로 JMeter를 실행한 다음 GUI에서 서버를 제어합니다. CLI 모드를 사용하여 원격 테스트를 실행할 수도 있습니다. 서버를 시작하려면 각 서버 호스트에서 jmeter-server[.bat] 를 실행하십시오.

또한 스크립트를 사용하여 선택적 방화벽/프록시 서버 정보를 지정할 수 있습니다.

-시간
[프록시 서버 호스트 이름 또는 IP 주소]
-피
[프록시 서버 포트]
:
jmeter-server -H my.proxy.server -P 8000

단일 테스트가 실행된 후 서버가 종료되도록 하려면 JMeter 속성 server.exitaftertest=true 를 정의하십시오 .

CLI 모드의 클라이언트에서 테스트를 실행하려면 다음 명령을 사용하십시오.

jmeter -n -t testplan.jmx -r [-Gprop=val] [-Gglobal.properties] [-X]
어디:
-G
서버에서 설정할 JMeter 속성을 정의하는 데 사용됩니다.
-엑스
테스트가 끝나면 서버를 종료하는 것을 의미합니다.
-R서버1,서버2
-r 대신 사용할 서버 목록을 제공하여 시작할 수 있습니다. remote_hosts 를 재정의 하지만 속성을 정의하지 않습니다.

jmeterengine.remote.system.exit 속성 이 true (기본값은 false ) 로 설정 되면 JMeter는 테스트 종료 시 RMI를 중지한 후 System.exit(0) 을 호출 합니다. 일반적으로 이것은 필요하지 않습니다.

1.4.6 명령줄을 통한 속성 재정의

Java 시스템 속성 및 JMeter 속성은 jmeter.properties 를 수정하는 대신 명령줄에서 직접 재정의할 수 있습니다 . 이렇게 하려면 다음 옵션을 사용하십시오.

-D[prop_name]=[값]
자바 시스템 속성 값을 정의합니다.
-J[prop_name]=[값]
로컬 JMeter 속성을 정의합니다.
-G[소품_이름]=[값]
모든 원격 서버에 보낼 JMeter 속성을 정의합니다.
-G[속성 파일]
모든 원격 서버에 보낼 JMeter 속성을 포함하는 파일을 정의합니다.
-L[카테고리]=[우선순위]
특정 범주를 주어진 우선 순위 수준으로 설정하여 로깅 설정을 무시합니다.

-L 플래그 는 범주 이름 없이 루트 로깅 수준을 설정하는 데 사용할 수도 있습니다.

:

jmeter -Duser.dir=/home/mstover/jmeter_stuff \
    -Jremote_hosts=127.0.0.1 -Ljmeter.engine=디버그
jmeter -LDEBUG
명령줄 속성은 시작 초기에 처리되지만 로깅 시스템이 설정된 후에 처리됩니다.

1.4.7 로깅 및 오류 메시지

3.2부터 JMeter 로깅은 더 이상 jmeter.properties와 같은 속성 파일을 통해 구성되지 않지만 대신 Apache Log4j 2 구성 파일( 기본적으로 JMeter가 시작된 디렉토리의 log4j2.xml )을 통해 구성됩니다. . 또한 JMeter 및 플러그인을 포함한 모든 코드는 3.2부터 로그를 남기기 위해 SLF4J 라이브러리를 사용해야 합니다 .

다음은 각 범주에 대해 두 개의 로그 어펜더와 로거를 정의하는 log4j2.xml 파일의 예입니다.

<구성 상태="WARN" 패키지="org.apache.jmeter.gui.logging">

  <첨부자>

    <!-- 기본적으로 JMeter가 실행된 디렉토리의 jmeter.log에 대한 기본 로그 파일 어펜더입니다. -->
    <파일명="jmeter-log" fileName="${sys:jmeter.logfile:-jmeter.log}" append="false">
      <패턴 레이아웃>
        <패턴>%d %p %c{1.}: %m%n</패턴>
      </패턴 레이아웃>
    </파일>

    <!-- GUI 로그 뷰어용 로그 어펜더. 아래를 참조하십시오. -->
    <GuiLogEvent 이름="gui-log-event">
      <패턴 레이아웃>
        <패턴>%d %p %c{1.}: %m%n</패턴>
      </패턴 레이아웃>
    </GuiLog이벤트>

  </첨부자>

  <로거>

    <!-- 루트 로거 -->
    <루트 레벨="정보">
      <AppenderRef 참조="jmeter-log" />
      <AppenderRef 참조="gui-log-event" />
    </루트>

    <!-- SNIP -->

    <!--
      # Apache HttpClient 로깅 예제
    -->
    <!-- # 헤더 와이어 활성화 + 컨텍스트 로깅 - 디버깅에 가장 적합 -->
    <!--
    <로거 이름="org.apache.http" 레벨="디버그" />
    <로거 이름="org.apache.http.wire" 레벨="오류" />
    -->

    <!-- SNIP -->

  </로거>

</구성>

따라서 예를 들어 org.apache.http 범주의 로그 수준을 디버그 수준으로 변경하려면 JMeter를 시작하기 전에 log4j2.xml 파일 에 다음 로거 요소를 추가(또는 주석 해제)하면 됩니다.

  <로거>
    <!-- SNIP -->
    <로거 이름="org.apache.http" 레벨="디버그" />
    <!-- SNIP -->
  </로거>

log4j2.xml 파일 을 구성하는 방법에 대한 자세한 내용 은 Apache Log4j 2 구성 페이지를 참조하십시오.

특정 범주 또는 루트 로거에 대한 로그 수준은 명령줄에서 직접 재정의할 수도 있습니다( log4j2.xml 을 수정하는 대신 ). 이렇게 하려면 다음 옵션을 사용하십시오.

-L[카테고리]=[우선순위]
특정 범주를 지정된 우선 순위 수준으로 설정하여 로깅 설정을 재정의합니다. 3.2부터 전체 카테고리 이름(예: org.apache.jmeter 또는 com.example.foo ) 을 사용하는 것이 권장 되지만 카테고리 이름이 jmeter 또는 jorphan 으로 시작하는 경우 org.apache입니다. 하위 호환성을 위해 전체 카테고리 이름(예: org.apache.jmeter 또는 org.apache.jorphan ) 을 구성하기 위해 카테고리 이름 입력에 내부적으로 추가 됩니다.

:

jmeter -Ljmeter.engine=디버그
jmeter -Lorg.apache.jmeter.engine=디버그
jmeter -Lcom.example.foo=디버그
jmeter -LDEBUG

로깅의 차이점: 기존 방식과 새로운 방식 :

JMeter는 3.2부터 로깅 API로 SLF4J를 사용하고 로깅 프레임워크로 Apache Log4j 2를 사용하므로 3.2 이전에 사용된 모든 로그 수준이 SLF4J/Log4j2에서 제공하는 새로운 사용 가능한 로그 수준 중 하나와 정확히 일치할 수는 없습니다. 따라서 기존 로깅 구성 및 로깅 코드를 마이그레이션해야 하는 경우 다음 차이점과 새로운 제안 사례를 염두에 두십시오.

범주 3.2 이전의 오래된 관행 3.2 이후의 새로운 관행
로거 참조 LoggingManager 를 통한 로거 참조 :
LoggingManager.getLoggerFor(문자열 카테고리);
LoggingManager.getLoggerForClass();
범주 또는 명시적 클래스와 함께 SLF4J API를 사용합니다.
LoggerFactory.getLogger(문자열 카테고리);
LoggerFactory.getLogger(Foo.class);
구성 또는 명령줄 인수의 로그 수준 이전 로그 수준:
  • 디버그
  • 정보
  • 경고하다
  • 오류
  • 치명적 오류
  • 없음
SLF4J/Log4j2를 통해 새로운 수준으로 매핑:
  • 디버그
  • 정보
  • 경고하다
  • 오류
  • 오류
  • 끄다
FATAL_ERROR 는 SLF4J API에서 지원하지 않으므로 기존 코드가 깨지지 않도록 대신 ERROR로 처리 한다 . FATAL 로그 수준 옵션 도 있습니다.
DEBUG 보다 덜 구체적인 TRACE 레벨 은 3.2부터 추가로 지원됩니다. 자세한 내용은 SLF4J 또는 Apache Log4J 2 설명서를 참조하십시오.
JMeter는 일반적으로 오류에 대한 팝업 대화 상자를 사용하지 않습니다. 이는 테스트 실행을 방해할 수 있기 때문입니다. 또한 철자가 틀린 변수나 함수에 대한 오류도 보고하지 않습니다. 대신 참조는 있는 그대로 사용됩니다. 자세한 내용은 함수 및 변수를 참조하십시오 .

JMeter가 테스트 중에 오류를 감지하면 메시지가 로그 파일에 기록됩니다. 로그 파일 이름은 log4j2.xml 파일에 정의됩니다(또는 -j 옵션을 사용하여 아래 참조). 기본값은 jmeter.log 이며 JMeter가 시작된 디렉토리에서 찾을 수 있습니다.

메뉴 옵션  →  로그 뷰어 는 기본 JMeter 창의 하단 창에 로그 파일을 표시합니다.

GUI 모드에서는 로그 파일에 기록된 오류/치명적 메시지 수가 오른쪽 상단에 표시됩니다.

오류/치명적인 카운터
오류/치명적인 카운터

명령줄 옵션 -j jmeterlogfile 을 사용하면 초기 속성 파일을 읽은 후 추가 속성이 처리되기 전에 처리할 수 있습니다. 따라서 jmeter.log 의 기본값을 재정의할 수 있습니다. 테스트 계획 이름을 매개변수로 사용하는 jmeter 스크립트(예: jmeter-n.cmd )는 테스트 계획 이름을 사용하여 로그 파일을 정의하도록 업데이트되었습니다(예: 테스트 계획 Test27.jmx 의 경우 로그 파일이 Test27로 설정됨). 로그 .

Windows에서 실행할 때 파일 확장자를 표시하도록 Windows를 설정하지 않는 한 파일이 jmeter로만 나타날 수 있습니다 . [어쨌든 텍스트 파일을 가장하는 바이러스 및 기타 악성 프로그램을 더 쉽게 감지할 수 있도록 해야 하는 작업...]

오류 기록뿐만 아니라 jmeter.log 파일은 테스트 실행에 대한 일부 정보를 기록합니다. 예를 들어:

2017-03-01 12:19:20,314 정보 oajJMeter: 버전 3.2.20170301
2017-03-01 12:19:45,314 정보 oajgaLoad: 파일 로드: c:\mytestfiles\BSH.jmx
2017-03-01 12:19:52,328 INFO oajeStandardJMeterEngine: 테스트 실행 중!
2017-03-01 12:19:52,384 INFO oajeStandardJMeterEngine: 그룹 BSH에 대해 1개의 스레드를 시작합니다. 램프 업 = 1.
2017-03-01 12:19:52,485 정보 oajeStandardJMeterEngine: 오류 발생 시 계속
2017-03-01 12:19:52,589 정보 oajtJMeterThread: 스레드 BSH1-1 시작됨
2017-03-01 12:19:52,590 INFO oajtJMeterThread: 스레드 BSH1-1이 완료되었습니다.
2017-03-01 12:19:52,691 INFO oajeStandardJMeterEngine: 테스트가 종료되었습니다

JMeter는 오류 대화 상자를 표시하기 위해 테스트를 중단하지 않기 때문에 로그 파일은 오류의 원인을 파악하는 데 도움이 될 수 있습니다.

1.4.8 명령줄 옵션의 전체 목록

JMeter를 " jmeter -? "로 호출하면 모든 명령줄 옵션 목록이 인쇄됩니다. 이것들은 아래에 나와 있습니다.

    --?
        명령줄 옵션을 인쇄하고 종료
    -h, --도움말
        사용 정보 인쇄 및 종료
    -v, --버전
        버전 정보를 출력하고 종료
    -p, --propfile <인수>
        사용할 jmeter 속성 파일
    -q, --addprop <인수>
        추가 JMeter 속성 파일
    -t, --testfile <인수>
        실행할 jmeter test(.jmx) 파일
    -l, --logfile <인수>
        샘플을 기록할 파일
    -i, --jmeterlogconf <인수>
        jmeter 로깅 구성 파일(log4j2.xml)
    -j, --jmeterlogfile <인수>
        jmeter 실행 로그 파일(jmeter.log)
    -n, --농구이
        nongui 모드에서 JMeter 실행
    -s, --서버
        JMeter 서버 실행
    -H, --proxyHost <인수>
        JMeter가 사용할 프록시 서버 설정
    -P, --proxyPort <인수>
        JMeter가 사용할 프록시 서버 포트 설정
    -N, --nonProxyHosts <인수>
        비프록시 호스트 목록 설정(예: *.apache.org|localhost)
    -u, --username <인수>
        JMeter가 사용할 프록시 서버의 사용자 이름 설정
    -a, --password <인수>
        JMeter가 사용할 프록시 서버의 비밀번호 설정
    -J, --jmeterproperty <인수>=<값>
        추가 JMeter 속성 정의
    -G, --globalproperty <인수>=<값>
        전역 속성 정의(서버로 전송)
        예: -Gport=123
         또는 -Gglobal.properties
    -D, --systemproperty <인수>=<값>
        추가 시스템 속성 정의
    -S, --systemPropertyFile <인수>
        추가 시스템 속성 파일
    -f, --forceDeleteResultFile
        테스트를 시작하기 전에 기존 결과 파일 및 웹 보고서 폴더가 있는 경우 강제 삭제
    -L, --loglevel <인수>=<값>
        [카테고리=]레벨 예: jorphan=INFO, jmeter.util=DEBUG 또는 com.example.foo=WARN
    -r, --run원격
        원격 서버 시작(remote_hosts에 정의됨)
    -R, --remotestart <인수>
        이 원격 서버 시작(remote_hosts 재정의)
    -d, --homedir <인수>
        사용할 jmeter 홈 디렉토리
    -X, --remoteexit
        테스트 종료 시 원격 서버 종료(CLI 모드)
    -g, --reportonly <인수>
        테스트 결과 파일에서 보고서 대시보드만 생성
    -e, --reportateendofloadtests
        부하 테스트 후 보고서 대시보드 생성
    -o, --reportoutputfolder <인수>
        보고서 대시보드의 출력 폴더

참고: JMeter 로그 파일 이름은 ' jmeter_'yyyyMMddHHmmss'.log ' 와 같이 작은 따옴표 쌍을 포함하는 경우 SimpleDateFormat(현재 날짜에 적용됨) 형식으로 지정됩니다.

특수 이름 LAST-t , -j 또는 -l 플래그에 사용되는 경우 JMeter는 이를 대화식 모드에서 실행된 마지막 테스트 계획을 의미하는 것으로 간주합니다.

1.4.9 CLI 모드 종료

버전 2.5.1 이전에는 CLI 모드 테스트가 완료되면 JMeter가 System.exit() 를 호출했습니다. 이로 인해 JMeter를 직접 호출하는 애플리케이션에 문제가 발생하여 JMeter는 더 이상 정상적인 테스트 완료를 위해 System.exit() 를 호출하지 않습니다. [일부 치명적인 오류는 여전히 System.exit() 를 호출할 수 있습니다 . ] JMeter는 시작하는 모든 비 데몬 스레드를 종료하지만 일부 비 데몬 스레드는 여전히 남아 있을 수 있습니다. 이것은 JVM이 종료되는 것을 방지합니다. 이 상황을 감지하기 위해 JMeter는 종료 직전에 새 데몬 스레드를 시작합니다. 이 데몬 스레드는 잠시 동안 기다립니다. 대기에서 반환되면 분명히 JVM이 종료될 수 없었고 스레드는 이유를 알려주는 메시지를 인쇄합니다.

jmeter.exit.check.pause 속성 을 사용하여 기본 일시 중지 2000ms(2초)를 재정의할 수 있습니다. 0 으로 설정하면 JMeter는 데몬 스레드를 시작하지 않습니다.

1.5 JMeter 설정

JMeter가 실행되는 속성을 수정하려면 / bin 디렉토리 에서 user.properties 를 수정하거나 jmeter.properties 의 고유한 복사본을 만들고 명령줄에 지정해야 합니다.

참고: 기본값 user.properties 를 갖는 JMeter 속성 user.properties 에 의해 정의된 파일에서 추가 JMeter 속성을 정의할 수 있습니다 . 파일이 현재 디렉토리에 있거나 JMeter bin 디렉토리에 있으면 파일이 자동으로 로드됩니다. 마찬가지로 system.properties 는 시스템 속성을 업데이트하는 데 사용됩니다.

매개변수

기인하다
설명
필수의
ssl.provider
내장 Java 구현을 사용하지 않으려면 SSL 구현에 대한 클래스를 지정할 수 있습니다.
아니
xml.parser
구현을 XML 파서로 지정할 수 있습니다. 기본값은 org.apache.xerces.parsers.SAXParser 입니다.
아니
remote_hosts
원격 JMeter 호스트(또는 필요한 경우 host:port ) 의 쉼표로 구분된 목록입니다 . 분산 환경에서 JMeter를 실행하는 경우 JMeter 원격 서버가 실행 중인 시스템을 나열하십시오. 이렇게 하면 이 컴퓨터의 GUI에서 해당 서버를 제어할 수 있습니다.
아니
not_in_menu
JMeter의 메뉴에서 보고 싶지 않은 구성 요소 목록입니다. JMeter에 점점 더 많은 구성 요소가 추가됨에 따라 관심 있는 구성 요소만 표시하도록 JMeter를 사용자 정의할 수 있습니다. 여기에 해당 클래스 이름 또는 클래스 레이블(JMeter의 UI에 나타나는 문자열)을 나열할 수 있습니다. 메뉴에 더 오래 나타납니다.
아니
search_paths
JMeter가 JMeter 플러그인 클래스(예: 추가 샘플러)를 검색할 경로 목록( ; 로 구분). 경로 항목은 jar 파일 또는 디렉토리일 수 있습니다. 이러한 디렉토리에 있는 모든 jar 파일은 자동으로 search_paths 에 포함되며 하위 디렉토리에 있는 jar 파일은 무시됩니다. 주어진 값은 lib/ext 디렉토리에 있는 모든 jar에 추가됩니다.
아니
user.classpath
JMeter가 유틸리티 및 플러그인 종속성 클래스를 검색할 경로 목록입니다. 플랫폼 경로 구분 기호를 사용하여 여러 경로를 구분합니다. 경로 항목은 jar 파일 또는 디렉토리일 수 있습니다. 이러한 디렉토리에 있는 모든 jar 파일은 자동으로 user.classpath 에 포함되며 하위 디렉토리에 있는 jar 파일은 무시됩니다. 주어진 값은 lib 디렉토리에 있는 모든 jar에 추가됩니다. 모든 항목은 시스템 클래스 로더의 클래스 경로와 JMeter 내부 로더의 경로에 추가됩니다.
아니
plugin_dependency_paths
JMeter가 유틸리티 및 플러그인 종속성 클래스를 검색할 경로 목록( ; 로 구분). 경로 항목은 jar 파일 또는 디렉토리일 수 있습니다. 이러한 디렉토리의 모든 jar 파일은 자동으로 plugin_dependency_paths 에 포함되며 하위 디렉토리의 jar 파일은 무시됩니다. 주어진 값은 lib 디렉토리에서 발견되거나 user.classpath 속성에 의해 제공된 모든 jar에 추가됩니다. 모든 항목은 JMeter 내부 로더의 경로에만 추가됩니다. plugin_dependency_paths 를 사용하는 플러그인 종속성 의 경우 user.classpath 보다 선호해야 합니다 .
아니
user.properties
추가 JMeter 속성을 포함하는 파일의 이름입니다. 이는 초기 속성 파일 뒤에 추가되지만 -q-J 옵션이 처리되기 전에 추가됩니다.
아니
system.properties
추가 시스템 속성이 포함된 파일의 이름입니다. 이는 -S-D 옵션이 처리되기 전에 추가됩니다.
아니

명령줄 옵션 및 속성 파일은 다음 순서로 처리됩니다.

  1. -p 프로필 파일
  2. jmeter.properties (또는 -p 옵션의 파일)가 로드됩니다 .
  3. -j 로그 파일
  4. 로깅이 초기화됩니다.
  5. user.properties 가 로드됩니다 .
  6. system.properties 가 로드됩니다 .
  7. 다른 모든 명령줄 옵션이 처리됩니다.

변경할 수 있는 다른 설정에 대한 추가 정보 는 jmeter.properties , user.propertiessystem.properties 파일 의 주석을 참조하십시오 .

Go to top