LinuxCommandLibrary

jmeter

Run performance and load tests

TLDR

Run a specific test plan in nongui mode

$ jmeter [[-n|--nongui]] [[-t|--testfile]] [path/to/file.jmx]
copy

Run a test plan in nongui mode using a specific log file
$ jmeter [[-n|--nongui]] [[-t|--testfile]] [path/to/file.jmx] [[-l|--logfile]] [path/to/logfile.jtl]
copy

Run a test plan in nongui mode using a specific proxy
$ jmeter [[-n|--nongui]] [[-t|--testfile]] [path/to/file.jmx] [[-H-|--proxyHost]] [127.0.0.1] [[-P|--proxyPort]] [8888]
copy

Run a test plan in nongui mode using a specific JMeter property
$ jmeter [[-n|--nongui]] [[-t|--testfile]] [path/to/file.jmx] [[-J|--jmeterproperty]] [key]='[value]'
copy

SYNOPSIS

jmeter [options] [propertyfile]

PARAMETERS

-n
    Run in non-GUI (batch) mode

-t filename
    Load test plan file (.jmx)

-p propfile
    Override JMeter properties file

-l filename
    Write results to .jtl file

-j filename
    JMeter run log file

-r
    Run test on remote hosts from properties

-R host1[,host2...]
    Run test on specified remote hosts

-e dashboardfolder
    Generate HTML report dashboard

-o dashboardfolder
    Output folder for HTML report

-g genPropFile
    Generate report from existing .jtl file

-Dprop=value
    Define JMeter property

-Jprop=value
    Define JVM system property

-Gprop=value
    Define property for remote servers

-X
    Exit JMeter immediately

-h, -help
    Print usage help

-v, -version
    Print version information

DESCRIPTION

Apache JMeter is an open-source application designed to load test functional behavior and measure performance of applications, including web, FTP, databases, and more. It supports protocols like HTTP, JDBC, LDAP, and SOAP.

The jmeter command launches JMeter's GUI by default for test plan creation and execution. For production load testing, use non-GUI mode to avoid GUI overhead consuming resources. Test plans are saved as .jmx files in XML format.

JMeter generates reports in CSV, XML (.jtl), or HTML dashboards. It supports distributed testing across remote servers, plugins for extensibility, and scripting via Beanshell or JSR223. Ideal for simulating heavy loads with threads, assertions, timers, and samplers. Requires Java 8+ runtime.

CAVEATS

Requires JDK 8+; GUI mode unsuitable for heavy load tests due to resource use; ensure JAVA_HOME set; distributed mode needs server setup and firewall config.

INSTALLATION

Download from jmeter.apache.org, unzip, optionally set JMeter_HOME. Run bin/jmeter script; add to PATH for global use.

NON-GUI EXAMPLE

jmeter -n -t test.jmx -l results.jtl -e report -o dashboard/
Executes test non-interactively, saves results, generates HTML report.

HISTORY

Originated in 1998 by Stefano Mazzocchi at Apache Software Foundation as a 100% Java desktop app for web app testing. Evolved into full Apache top-level project (2008), with major releases adding protocols, non-GUI mode, and reporting. Widely used in DevOps for CI/CD integration.

SEE ALSO

ab(1), siege(1)

Copied to clipboard