[Load Test]Apache JMeter User's Manual - 1. Getting Started

2018. 4. 20. 14:17OS/개발환경구축


매번 설치해서 테스트를 해보겠다 해보겠다 했는데, 자꾸 미뤄서, 이번 테스트 할때를 기회삼아서,
jMeter에 대해서 설치부터 전체적인 테스트 플랜 짜는 것과 JMeter 구동하는 것까지 전체적으로 정리를 해보도록 합니다.
reference가 잘 나와 있기 때문에, 발!!! 번역을 하면서 하나씩 테스트 해보도록 합니다. 


*주의 이 글은 매번 이야기 하지만, 저 스스로 익혀가기 위해 작성해 놓은 것이라는 점 !!!




이것이 바로 3.x  GUI 모드의 JMeter 랍니다

User's Manual
필요한 부분에 대해서만 확인하면 된다고 나와 있네요.

우리는 우선 Getting Started 에서 설치 편을 확인하겠습니다.

1.Getting Started

1.0 Overview

JMeter를 사용할땐 , 일반적으로 아래 프로세스를 따라하시면 됩니다.

1.0.1 Test Plan building

이걸 하기위해선, JMeter GUI 모드를 구동(http://jmeter.apache.org/usermanual/get-started.html#running)합니다.
브라우저 또는 네이티브 어플리케이션에서 어플리케이션을 레코드하는 것을 선택할수 있습니다.
그걸 사용하려면 메뉴로 가서 File -> Template -> Recoding 을 선택하시면 됩니다.

수동으로 여러분의 플랜을 빌드할수 있다는 점도 기억해두세요.
주요 컨셉을 이해하기 위해서는 이 문서(http://jmeter.apache.org/usermanual/test_plan.html)를 읽는 것도 확실하게 하세요

이 옵션들중 하나를 사용해서 디버그를 할것 입니다.

그리고 View Results Tree Renders 나 Testers(CSS/JQUERY, JSON, Regexp, XPath)
여러분의 테스트 플랜을 빌드할때, best-practices을 따르도록 하세요

1.0.2 Load Test running

테스트 플랜이 준비되면, 부하 테스트를 시작할수 있습니다.
첫번째 단계는 JMeter를 구동할 injectors을 설정하는 것입니다.
이것은 다른 부하테스트 툴과 같이  아래 내용들을 포함합니다.

  • CPU, memory, network의 측면에서 정확한 머신 측정
  • OS 튜닝
  • Java Setup : JMeter가 지원받는 가장 최근 버전을 설치하도록 하세요
  • Java Heap 사이즈가 증가한다. : 기본적으로 JMeter는 1 GB의 힙으로 실행된다.
    이것은 여러분의 테스트에 대해서 충분하지 않을수 있고, 테스트 플랜과 구동하기 원하는 스레드의 수에 달려 있습니다.

모든 것이 준비되었다면, 이제 부하 테스트를 위한 실행을 하기 위해 Command-line 모드를 사용할 것입니다.
(뭐 Non GUI 모드 라고 하죠)

 GUI 모드를 사용해서 테스트를 하지 마세요 !

Non Gui 모드를 사용하는 것은 ,  결과가 포함된 CSV(또는 XML) 파일을 생성할수 있고, 
부하 테스트가 끝나면 HTML 리포트를 생성하는 JMeter를 갖을수 있습니다.
JMeter는 기본적으로 부하 테스트의 요약을 실행하는 동안에 제공할 것입니다. 
여러분은 Backend Listener를 사용해서 테스트 동안 실시간 결과를 볼수 있습니다.


1.0.3 Load Test analysis

부하테스트가 끝나면, 부하 테스트를 분석할  HTML 리포트를 사용할수 있습니다. 


1.0.4 Let's start

JMeter 사용하는 것을 시작하는데 가장 쉬운 방법은 최근 릴리즈 버전을 다운 받아서, 그것을 설치하는 것입니다.
릴리즈는 여러분이 빌드할 필요가 있는 모든 파일들을 포함하고 있고, 테스트들, 예를 들면  Web(HTTP/HTTPS), FTP, JDBC, LDAP, Java, JUnit 등등의 대부분의 타입들의 테스트들을 실행할수 있습니다.

JDBC 테스팅을 실행하길 원하면 , 물론 적절한 여러분의 벤더로 부터 받은 JDBC 드라이버가 필요합니다.
JMeter는 어떤 JDBC 드라이버도 제공하지 않습니다. 

JMeter는 JMS API jar를 가지고 있지만, JMS 클라이언트 구현체는 가지고 있지 않습니다.
JMS 테스트를 실행하길 원한다면, JMS provider로 부터 적합한 jar를 다운로드 할 필요가 있죠

추가적인 jar들을 설치하는 상세 내용을 위해선  JMeter Class path 섹션을 보세요 

다음은 JMeter를 시작하고, JMeter 기본 사항을 익히기 위해 User Guide의 Building a Test Plan 섹션을 살펴보세요
(예를 들면, 구성요소들 추가하기와 삭제하기)

마지막으로, 테스트 플랜의 특정 타입을 어떻게 빌드하는지에 대한 적절한 섹션을 살펴보세요.
예를 들어, Web application에 대한 테스트 하는 것에 관심이 있다면, Bulding a Web Test Plan 을 보시면 되죠.
다른 특정 테스트 플랜 섹션은 아래와 같네요

  • Advanced Web Test Plan
  • JDBC
  • FTP
  • JMS Point-to-Point
  • JMS Topic
  • LDAP
  • LDAP Extended
  • WebServices(SOAP)

JMeter 테스트 플랜을 빌드하고 실행하는것이 편하게 되면,
여러분의 테스트 플랜에 보다 많은 조정을 제공하는 다양한 설정 구성요소(timers, listeners, assertions 등등) 들에  찾아 볼수 있습니다. 


1.1. Requirements

JMeter는 여러분의 컴퓨터 환경이 최소한의 요구사항을 충족해야 가능합니다.

1.1.1 Java  Version

JMeter 4는 Java 8 이나 9에 호환이 됩니다.
보안과 성능의 이유로 메이저 버전들의 가장 최신의 마이너 버전을 설치하는 것을 강력하게 권해드립니다.

JMeter는 표준 Java API들을 사용합니다. JRE 구현 문제로 인해 JRE가 Jmeter를 실행하지 못하는 경우 버그 리포트를 보내지 말아주세요.

JRE을 사용할수 있음에도, HTTPS의 레코딩과 관련해서는 JDK을 설치하는 것이 더 낫습니다.
Jmeter는 JDK에 keytool 유틸리티가 필요합니다.

1.1.2 Operating Systems

JMeter는 100% 자바 어플리케이션이고, 자바 실행 호환을 갖는 어떤 시스템이고 정확하게 실행되어야 합니다. 
JMeter로 테스트한 OS는 JMeter wiki에서 확인할수 있습니다.

1.2. Optional

JMeter 개발을 계획 한다면, 하나 혹은 그 이상의 아래의 추가적인 패키지가 필요합니다.

1.2.1 Java Compiler
1.2.2 SAX XML Parser
1.2.3 Email Support
1.2.4 SSL Encryption
1.2.5 JDBC Driver
1.2.6 JMS client
1.2.7 Liberaries for ActiveMQJMS

*** 상세 내용은 생략합니다. (개발안해요)


1.3 Installation

대부분의 사용자들은 가장 최신 릴리즈를 실행하는 것을 추천드립니다.

릴리즈 빌드를 설치하기 위해서는 간단하게 JMeter가 설치되기 원하는 디렉토리에 zip 파일 압축을 풀어줍니다.
정확하게 설치된 JRE/JDK을 여러분이 가지고 있고, JAVA_HOME 환경변수가 세팅되면 여러분이 해야 할 것은 더 이상 아무것도 없습니다.

디렉토리 경로에 공백이 포함될 경우 문제가 발생할 수 있습니다.(특히 서버-클라이언트 모드)

설치된 디렉토리 구조는 아래와 같습니다.
apache-jmeter-X.Y
apache-jmeter-X.Y/bin
apache-jmeter-X.Y/docs
apache-jmeter-X.Y/extras
apache-jmeter-X.Y/lib/
apache-jmeter-X.Y/lib/ext
apache-jmeter-X.Y/lib/junit
apache-jmeter-X.Y/licenses
apache-jmeter-X.Y/printable_docs
원하면 apache-jmeter-x.y 디렉토리 명은 수정할 수 있습니다.
하지만 서브 디렉토리 이름은 바꾸면 안됩니다.


1.4. Running JMeter

jMeter를 실행하기 위해서는 jmeter.bat 를 실행하면 됩니다.
bin 디렉토리에서 찾을 수 있고, 실행하면 바로 JMeter GUI 을 볼수 있습니다.


 GUI 모드를 사용해서 테스트를 하지 마세요 !

  • jmeter.bat
    run JMeter (in GUI mode by default)
  • jmeterw.cmd
    run JMeter without the windows shell console (in GUI mode by default)
  • jmeter-n.cmd
    drop a JMX file on this to run a non-GUI test
  • jmeter-n-r.cmd
    drop a JMX file on this to run a non-GUI test remotely
  • jmeter-t.cmd
    drop a JMX file on this to load it in GUI mode
  • jmeter-server.bat
    start JMeter in server mode
  • mirror-server.cmd
    runs the JMeter Mirror Server in non-GUI mode
  • shutdown.cmd
    Run the Shutdown client to stop a non-GUI instance gracefully
  • stoptest.cmd
    Run the Shutdown client to stop a non-GUI instance abruptly

특별한 이름 LAST는 jmeter-n.cmd, jmeter-t.cmd, jmeter-n-r.cmd와 사용할수 있고,
대화식으로 구동하는 가장 마지막 테스트 플랜을 의미합니다.

JMter에 대한 JVM 세팅을 커스터마이징하는데 사용 할수 있는 몇가지 환경 변수들이 있습니다.
이걸 세팅하는 가장 쉬운 방법은 setenv.bat 이라는 이름의 파일으 생성하는 것입니다.
그런 파일은 아래와 같이 보일 수 있습니다.

rem This is the content of bin/setenv.bat,
rem it will be called by bin/jmeter.bat

set JVM_ARGS="-Xms1024m -Xmx1024m -Dpropname=value"
JVM_RAGS는 jmeter.bat 스크립트에 JVM 세팅을  오버라이드 하는데 사용되고, 
JMeter 시작하는데 셋을 갖을 것입니다. 예를 들어
jmeter -t test.jmx ...
다음 환경 변수들이 정의 될 수 있습니다.

  • DDRAW
    JVM options to influence usage of direct draw, e.g. -Dsun.java2d.ddscale=true. Default is empty.
  • GC_ALGO
    JVM garbage collector options. Defaults to -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20
  • HEAP
    JVM memory settings used when starting JMeter. Defaults to -Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
  • JMETER_BIN
    JMeter bin directory (must end in \). Value will have been guessed, when setenv.bat is called.
  • JMETER_COMPLETE_ARGS
    If set indicates, that JVM_ARGS and JMETER_OPTS are to be used, only. All other options like HEAP and GC_ALGO will be ignored. Default is empty.
  • JMETER_HOME
    installation directory. Will be guessed from location of jmeter.bat
  • JMETER_LANGUAGE
    Java runtime options to specify used languauge. Defaults to: -Duser.language="en" -Duser.region="EN"
  • JM_LAUNCH
    Name of the java executable, like java.exe (default) or javaw.exe
  • JVM_ARGS
    Java options to be used when starting JMeter. These will be added last to the java command. Default is empty

*****유닉스 버전도 따로 다 정리 되어 있음.


1.4.1 JMeter's Classpath

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

  • JMETER_HOME/lib
    used for utility jars
  • JMETER_HOME/lib/ext
    used for JMeter components and plugins

새로운 JMeter 컴포넌트를 개발했다면, jMeter의 lib/ext 디렉토리에 jar를 카피하면 된다.
JMeter는 그럼 자동으로 JMeter 컴포넌트를 이곳에서 찾습니다.
lib/ext 에 유틸리티 jar 나 플러그인에서 사용하는 의존관계 jar를 사용하지 말아요.
이곳은 오직 JMeter의 컴포넌트와 플러그인만 관여 합니다.

JMeter 플러그인 jar들을 lib/ext 디렉토리에 넣는 것이 싫으면,
jmeter.properties에 search_paths property를 정의 하시면 됩니다.

유틸리티나 의존관계 jar(라이브러리 등)은 lib 폴더에 위치할 수 있습니다.
이것도 여기 넣기 싫으면, jmeter.properties에 user.classpath 나 plugin_dependency_paths 프로퍼티를 정의하면 되요.
다른 것에 대한 설명이 아래 나와 있습니다.

다른 jar들( JDBC, JMS 구현체 , JMeter 코드에 따라 필요한 다른 지원 라이브러리들 같은 것)은 lib 디렉토리에 위치시킬수 있습니다.
다시 말하지만, lib/ext 디렉토리가 아닙니다. 또는 user.classpath에 추가 하시던지요

JMeter는 zip 파일 말고, jar 파일만 찾습니다.

여러분은 $JAVA_HOME/jre/lib/ext 에 유틸리티 Jar 파일들을 설치 할수 있습니다.
또는 jmeter.properties에 user.classpath 나 plugin_dependency_paths 프로퍼티를 셋업할수 있습니다.

CLASSPATH 환경 변수의 셋팅은 어떤 효과도 가지고 있지 않을 겁니다.
JMeter가 "java -jar"로 시작하기 때문입니다. 그리고, java 명령은 조용하게 CLASSPATH 변수와 -jar가 사용될때 -classpath/-cp 옵션을 무시할것입니다.

단지 JMeter 뿐만 아니라 다른 모든 자바 프로그램에 문제를 일으킵니다.


1.4.2 Create Test Plan from Template

존재하는 템플릿에서 새로운 테스트 플랜을 생성할수 있는 능력을 가지고 있습니다.
그 능력을 발휘 하기 위해선 File-> Templates 메뉴를 사용하거나, Templates icon을 클릭하면 됩니다.

팝업이 나타나면, 셀렉트 박스 목록 중에 하나를 선택하면 되겠죠.
각각의 템플릿에 대한 문서는 템플릿에서 생성된 테스트 플랜을 진행하기 위한 것이 설명되어 있습니다.

**** 그렇다면 설명된 내용을 읽어야 하겠네요.



다시 돌아와서... 위에 "Building a Web Test Plan"을 통해서 차근차근 따라 해보니 테스트가 가능했다라고 한다.

1.4.3. Using JMeter behind a proxy

방화벽이나 프록시 서버 뒤에서 테스트하는 중이라면, JMeter에게 방화벽이나 프록시 서버 hostname 과 port number을 알려줘야 한다.
그렇게 하기 위해서는 jmeter[.bat] 파일을 컴엔드 라인에서 다음 파라미터와 함께 실행해야 한다.

  • -H : [proxy server hostname or ip address]
  • -P : [proxy server port]
  • -N : [nonproxy hosts] (e.g. *.apache.org|localhost)
  • -u : [username for proxy authentication - if required]
  • -a : [password for proxy authentication - if required]

example
jmeter -H my.proxy.server -P 8000 -u username -a password -N localhost
--proxyHost, --proxyPort, --username, --password 로 파라미터 이름을 사용할수 있습니다.
커멘드 라인에서 제공되는 파라미터는 시스템상에 다른 유저들에게 보여질수 있습니다.
만약 프록시 호스트 와 포트 가 제공되었다면, JMeter는 다음 시스템 프로퍼티를 설정합니다.

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

nonproxy host 목록이 제공되었을땐, JMeter는 다음 시스템 프로퍼티들을 설정합니다.

  • http.nonproxyHosts
  • https.nonproxyHosts

http 와 https proxies 둘다 셋팅하는 것을 원치 않는다면, 
컴맨드 라인 파라미터를 사용하는 대신에 system.properties에 관련된 프로퍼티들을  정의 할수 있습니다.

Proxy Settins은 테스트 플랜에도 정의 할수 있습니다. 
HTTP Request Defaults 구성 이든 HTTP Request sampler elements 을 사용해서 말이죠


JMeter는 자신만의 내장 Proxy Server인 HTTP(S) Test Script Recorder를 가지고 있습니다.
이것은 HTTP 나 HTTPS 브라우저 세션을 레코딩하는데만 사용됩니다.
위에서 서술한 JMeter가 HTTP 나 HTTPS 요청을 스스로 만들때  사용되는 프록시 세팅과 혼돈하면 안됩니다.

 1.4.4. Non-GUI Mode(Command Line mode)

부하테스트를 하는동안, GUI 없이 최상의 결과를 얻기 위해 이 모드로 JMeter를 구동해야만 합니다.
그렇게 하기 위해선 다음 명령 옵션을 사용하세요.

  • -n : This specifies JMeter is to run in non-gui mode
  • -t : [name of JMX file that contains the Test Plan]/
  • -l  : [name of JTL file to log sample results to]/
  • -j : [name of JMeter run log file].
  • -r : Run the test in the serveres specified by the jMeter property
         "remote_hosts"
  • -R : [list of remote servers] Run the test in the specified remote servers
  • -g : [path to CSV file] generate report dashboard test
  • -o : ouput folder where to generate the report dashbord after load test.
          Folder must not exist or be empty

추가적인 방화벽이나 프록시 서버 정보를 명시하도록 합니다.

  • -H : [proxy server hostname or ip address]
  • -P : [proxy server port]

example
jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000
프로퍼티 jmeterengin.stop.fail.system.exit 가 true (기본값은 false)로 설정되어 있다면
모든 스레드가 멈출수 없을땐 , JMeter는 System.exit(1)을 발생시킬겁니다.
일반적으로 이건 필요하지 않습니다. 

**** 실행을 해보니 , 
Error in NonGUIDriver java.lang.RuntimeException: Could not find the TestPlan class! 라는 에러가 난다. 
테스트 플랜을 저장할때 주의 할 점은, Save Test Plan as 을 통해서 저장해야만 잘 된다는 점이다.


1.4.5 Server Mode

분산된 테스팅을 위해, 원격 노드 상에서 서버모드로 JMeter를 구동하고, GUI에서 서버를 컨트롤 합니다.
원격 테스트를 구동하기 non-gui 모드도 사용할수 있습니다.
서버를 시작하기 위해선, 각각의 서버 호스트에서 jmeter-server[.bat]을 구동합니다. 

스크립트는 추가적인 방화벽이나 프록시 서버 정보를 기재할수 있게 합니다.

  • -H : [proxy server hostname or ip address]
  • -P : [proxy server port]

example
jmeter-server -H my.proxy.server -P 8000
싱글 테스트가 실행된 후에 서버를 종료하길 원하면, 그땐 JMeter property 의 server.exitaftertest=ture 로 설정하면 됩니다.
 non-GUI 모드에서 클라이언트에서 테스트를 실행하려면, 다음 명령을 사용하세요
jmeter -n -t testplan.jmx -r [-Gprop=val] [-Gglobal.properties] [-X]
  • -G : is used to define JMeter properties to be set in the servers
  • -X : means exit the servers at the end of the test
  • -Rserver1 , server2 : can be used instead of -r to provide a list of servers to start.
                                      Overrides remote_hosts, but does not define the property.

jmeterengine.remote.system.exit 의 프로퍼티는 true 로 맞춰놓으면 (기본값은 false), 
JMeter는 테스트 끝에, RMI을 멈춘후에 System.exit(0)을 발생할것입니다.
일반적으로 필요가 없습니다.


1.4.6 Overriding Properties Via The command line

커맨드라인에서 직접 자바 시스템 프로퍼티 와 JMeter 프로퍼티를 덮어쓸수 있습니다.
그렇게 하기 위해선, 다음 옵션을 사용하세요.

  • -D[prop_name]=[value] : defines a java system property value.
  • -J[prop_name]=[value] : defines a local JMeter property.
  • -G[prop_name]=[value] : defines a JMeter property to be sent to all remote servers.
  • -G[propertyfile] : defines a file containing JMeter properties to be sent to all remote servers.
  • -L[category]=[priority] : overrides a logging setting, setting a particular category to the given priority level.

-L 플래그는 루트 로깅 레벨을 셋팅하는 카테고리 이름 없이 사용할수 있습니다.

example
jmeter -Duser.dir=/home/mstover/jmeter_stuff \ -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG
jmeter -LDEBUG
컴맨드 라인 프로퍼티는 startup에서 일찍 처리되지만, 로깅 시스템은 셋업된  후에 처리 됩니다.

1.4.7 Logging and error messages

3.2 버전이후에 JMeter 로깅은 jmeter.properties와 같은 프로퍼티 파일을 통해서 더 이상 구성되지 않지만,
Apache Log4j 2 구성 파일을 통해서는 구성됩니다.
(log4j2.xml , JMeter 가 런칭된 곳에 디렉토리안에 있음 , 이 대신함, 또한 모든 JMeter에 포함된 코드와 MUST 플러그인은 
3.2이후부터 로그를 남기는 SLF4J 라이브러리를 사용합니다. )

다음은 log4j2.xml 파일 예제 입니다.
두개의 로그 appenders 와 각각의 카테고리에 대한 로거들을 정의 했습니다.
<Configuration status="WARN" packages="org.apache.jmeter.gui.logging">

  <Appenders>

    <!-- The main log file appender to jmeter.log in the directory from which JMeter was launched, by default. -->
    <File name="jmeter-log" fileName="${sys:jmeter.logfile:-jmeter.log}" append="false">
      <PatternLayout>
        <pattern>%d %p %c{1.}: %m%n</pattern>
      </PatternLayout>
    </File>

    <!-- Log appender for GUI Log Viewer. See below. -->
    <GuiLogEvent name="gui-log-event">
      <PatternLayout>
        <pattern>%d %p %c{1.}: %m%n</pattern>
      </PatternLayout>
    </GuiLogEvent>

  </Appenders>

  <Loggers>

    <!-- Root logger -->
    <Root level="info">
      <AppenderRef ref="jmeter-log" />
      <AppenderRef ref="gui-log-event" />
    </Root>

    <!-- SNIP -->

    <!--
      # Apache HttpClient logging examples
    -->
    <!-- # Enable header wire + context logging - Best for Debugging -->
    <!--
    <Logger name="org.apache.http" level="debug" />
    <Logger name="org.apache.http.wire" level="error" />
    -->

    <!-- SNIP -->

  </Loggers>

</Configuration>
예를 들어 org.apache.http 카테고리를 debug 레벨로 로그 레벨을 변경하고자 한다면, 
JMeter가 런칭하기 전에 log4j2.xml에 다음 logger 구성요소를 간단히 추가할수 있습니다.
  <Loggers>
    <!-- SNIP -->
    <Logger name="org.apache.http" level="debug" />
    <!-- SNIP -->
  </Loggers>
log4j2.xml 파일 어떻게 구성할지에 대한 상세 내역을 보기 위해선 아래 링크를 참고하시면됩니다.

역시나 (log4j2.xml을 수정하지 않고) 특정 카테고리들이나 루트 로거에 대한 로그 레벨은 컴맨드 라인에서 직접 오버라이드 할수 있습니다.
아래 옵셥을 따라 하세요

  • -L[category]=[priority] : Overrides a logging setting, setting a particular category to the given priority level. Since 3.2, it is recommended to use a full category name (e.g, org.apache.jmeter or com.example.foo), but if the category name starts with either jmeter or jorphan, org.apache. will be prepended internally to the category name input to construct a full category name (i.e, org.apache.jmeter or org.apache.jorphan) for backward compatibility.

example 
jmeter -Ljmeter.engine=DEBUG
jmeter -Lorg.apache.jmeter.engine=DEBUG
jmeter -Lcom.example.foo=DEBUG
jmeter -LDEBUG

Differences in Logging : Old vs New Practices:

As JMeter uses SLF4J as logging API and Apache Log4j 2 as a logging framework since 3.2, not every log level used before 3.2 can match exactly with one of the new available log levels provided by SLF4J/Log4j2. Therefore, please keep the following differences and new suggested practices in mind if you need to migrate any existing logging configurations and logging code.

CategoryOld Practices Before 3.2New Practices Since 3.2
Logger Reference
Logger reference through LoggingManager:
LoggingManager.getLoggerFor(String category);
LoggingManager.getLoggerForClass();
Use SLF4J API with either category or explicit class:
LoggerFactory.getLogger(String category);
LoggerFactory.getLogger(Foo.class);
Log Levels in Configuration or Command Line Arguments
Old Log Levels:
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL_ERROR
  • NONE
Mapping to New Levels through SLF4J/Log4j2:
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • ERROR
  • NONE
Note: Since 'FATAL_ERROR' is not supported by SLF4J API, it is treated as 'ERROR' instead for existing code not to break.
Note: 'TRACE' level, which is less specific than 'DEBUG', is supported additionally since 3.2. Look up SLF4J or Apache Log4J 2 documentations for details.


JMeter는 테스트 하는 동안 에러를 감지하면, 메세지는 로그파일에 작성됩니다.
로그 파일 이름은 log4.j2.xml 파일에 정의되어 있습니다.
jmeter.log로 기본값이 되어 있고, JMeter 가 있는 파일안에 있습니다.

메뉴에서 Options->Log viewer는 로그 파일을 볼수 있게 해줍니다.
GUI 모드에서 상단 오른쪽에 로그파일을 안에 error/fatal 메세지들 개수를 보여주네요.

이하 생략...


1.4.8. Full list of command-line options

jmeter -? 이라고 컴맨드 라인에 입력하면 모든 명령이 리스트로 나타납니다.

D:\jmeter\jmeter3.3\bin>jmeter -?
    _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____

   / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \
  / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |
/ ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 3
3 r1808647

Copyright (c) 1999-2017 The Apache Software Foundation

        --?
                print command line options and exit
        -h, --help
                print usage information and exit
        -v, --version
                print the version information and exit
        -p, --propfile <argument>
                the jmeter property file to use
        -q, --addprop <argument>
                additional JMeter property file(s)
        -t, --testfile <argument>
                the jmeter test(.jmx) file to run. "-t LAST" will load last
                used file
        -l, --logfile <argument>
                the file to log samples to
        -i, --jmeterlogconf <argument>
                jmeter logging configuration file (log4j2.xml)
        -j, --jmeterlogfile <argument>
                jmeter run log file (jmeter.log)
        -n, --nongui
                run JMeter in nongui mode
        -s, --server
                run the JMeter server
        -H, --proxyHost <argument>
                Set a proxy server for JMeter to use
        -P, --proxyPort <argument>
                Set proxy server port for JMeter to use
        -N, --nonProxyHosts <argument>
                Set nonproxy host list (e.g. *.apache.org|localhost)
        -u, --username <argument>
                Set username for proxy server that JMeter is to use
        -a, --password <argument>
                Set password for proxy server that JMeter is to use
        -J, --jmeterproperty <argument>=<value>
                Define additional JMeter properties
        -G, --globalproperty <argument>=<value>
                Define Global properties (sent to servers)
                e.g. -Gport=123
                 or -Gglobal.properties
        -D, --systemproperty <argument>=<value>
                Define additional system properties
        -S, --systemPropertyFile <argument>
                additional system property file(s)
        -f, --forceDeleteResultFile
                force delete existing results files before start the test
        -L, --loglevel <argument>=<value>
                [category=]level e.g. jorphan=INFO, jmeter.util=DEBUG or com
                .example.foo=WARN
        -r, --runremote
                Start remote servers (as defined in remote_hosts)
        -R, --remotestart <argument>
                Start these remote servers (overrides remote_hosts)
        -d, --homedir <argument>
                the jmeter home directory to use
        -X, --remoteexit
                Exit the remote servers at end of test (non-GUI)
        -g, --reportonly <argument>
                generate report dashboard only, from a test results file
        -e, --reportatendofloadtests
                generate report dashboard after load test
        -o, --reportoutputfolder <argument>
                output folder for report dashboard
주의 JMeter  로그 파일 이름은 SimpleDateFormat 포멧입니다.(현재 날짜가 적용됨) 싱글 따옴표가 포함되어 있다면,
예를 들어 'jmeter_'yyyyMMddHHmmss'.log' 입니다.

만약 특별한 이름 LAST가 -t , -j 또는 -l 플레그을 사용하면, 그땐 JMeter는 인터렉티브 모드에서 동작했던 가장 마지막 테스트 플랜을
의미합니다. 

1.4.9  non-GUI shutdown

2.5.1 버전 이전에는 non-GUI 테스트 완료될때 System.exit()을 발생합니다.
이것은 JMeter가 직접 발생시킨 어플리케이션에 대한 문제를 일으킵니다.
따라서, JMeter는 일반 테스트 완료를 위해 System.exit()을 더 이상 발생하지 않습니다.
[몇가지 치명적인 에러들은 아직까지 System.exit()을 발생시킵니다.]
JMeter는 시작된 모든 non-daemon 스레드들을 종료합니다 
하지만 몇몇 non-daemon 스레들일 아직까지 남아있을 수 있는 가능성이 있습니다.
이들을 JVM이  종료하는 것을 막을 겁니다.
이 상황을 감지하기 위해서는, JMeter는 거기에서 나가기 전에, 새로운 데몬 스레드을 시작합니다.
이 데몬 스레드는 잠시동안 기다립니다.
만약 대기로부터 리턴을 받으면, 그땜 명확하게 JVM이 종료될수 없었던 것이고, 이 스레드는 그 이유에 대해서 메세지를 프린트합니다.

jmeter.exit.check.pause 프로퍼티는 기본 pause 값인 2000 ms (2secs)을 오버라이드 하는데 사용됩니다.
0으로 세팅되었다면, JMeter는 데몬 스레드를 시작하지 않을 것입니다.


1.5. Configuring JMeter

JMeter가 동작하는데 프러퍼티들을 수정하고자 한다면, /bin 디렉토리 안에 있는 user.properties 파일을 수정하거나, 
jmeter.properties 에 대한 복사본을 생성하고, 커맨드 라인에 그걸 명시하면 됩니다.

주의 user.properties 기본값을 갖는 user.propreties JMeter 프로퍼티에 의해 정의된 파일안에 추가적으로 JMeter 프로퍼티를 정의할수 있다. 이 파일은 자동으로 로드될것입니다. 현재 디렉토리에서 찾았거나, JMeter bin directory 에서 찾았을때.
비슷하게, system.properties는 시스템 프로퍼티를 수정할때 사용됩니다.



커맨드 라인 옵션들과 프로퍼티 파일들은  다음 순서로 실행됩니다.

(1) -p propfile
(2) jmeter.properties (or the file from the -p option) is then loaded
(3) -j logfile
(4) Logging is initialized
(5) user.properties is loaded
(6) system.properties is loaded
(7) all other command-line options are processed


jmeter.properties , user.properties, system.properties 파일안에 있는 커맨트들을 보면 
여러분이 변경할수 있는 다른 설정들에 대한 보다 더 많은 정보가 나와  있답니다.