jmeter
jmeter copied to clipboard
Docker image for Apache JMeter - https://jmeter.apache.org
Docker image for Apache JMeter
-
Apache JMeter : an application designed to load test functional behavior and measure performance - https://jmeter.apache.org
-
The version number is composed of two version numbers
- the first is the version of the Apache JMeter embedded in this docker image
- the second is for this docker image itself
Apache JMeter
-
egaillardon/jmeter
For a Docker image including JMeter plugins, see https://hub.docker.com/r/egaillardon/jmeter-plugins/
Supported tags and respective Dockerfile
links
-
Apache JMeter 5.3 (see changelog below)
-
latest
,5.3.0-1.0.1
(Dockerfile) -
5.3.0-1.0.0
(Dockerfile)
-
-
Apache JMeter 5.2.1 (see changelog below)
- No more new 5.2.1 version (05/21/2020)
-
5.2.1-1.0.0
(Dockerfile)
-
Apache JMeter 5.2 (see changelog below)
- No more new 5.2 version (01/26/2019)
-
5.2.0-1.0.0
(Dockerfile)
-
Apache JMeter 5.1.1 (see changelog below)
- No more new 5.1.1 version (11/10/2019)
-
5.1.1-2.0.0
(Dockerfile) -
5.1.1-1.1.0
(Dockerfile) -
5.1.1-1.0.0
(Dockerfile)
-
Apache JMeter 5.1 (see changelog below)
- No more new 5.1 version (11/10/2019)
-
5.1.0-1.0.0
(Dockerfile)
-
Apache JMeter 5.0 (see changelog below)
- No more new 5.0 version (02/20/2019)
-
5.0.0-2.1.1
(Dockerfile) -
5.0.0-2.1.0
(Dockerfile) -
5.0.0-2.0.0
(Dockerfile) -
5.0.0-1.2.0
(Dockerfile) -
5.0.0-1.1.0
(Dockerfile) -
5.0.0-1.0.0
(Dockerfile)
-
Apache JMeter 4.0 (see changelog below)
- No more new 4.0 version (02/20/2019)
-
4.0.0-2.1.1
(Dockerfile) -
4.0.0-2.1.0
(Dockerfile) -
4.0.0-2.0.0
(Dockerfile) -
4.0.0-1.3.0
(Dockerfile) -
4.0.0-1.2.0
(Dockerfile) -
4.0.0-1.1.0
(Dockerfile) -
4.0.0-1.0.0
(Dockerfile)
Quick reference
- Where to get more information about Apache JMeter
- Where to get more information about Docker
How to use this image
Working directory
The working directory defined in the Dockerfile is /jmeter
.
Default User
The default user is jmeter
.
Environment variables
Variable | Description | Default value |
---|---|---|
GC_ALGO |
Java runtime options to specify JVM garbage collection algorithm | "-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20" |
VERBOSE_GC |
Java runtime options to generate GC verbose file | "-verbose:gc -Xloggc:gc_jmeter_%p.log -XX:+PrintGCDetails -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC -XX:+PrintGCApplicationConcurrentTime -XX:+PrintAdaptiveSizePolicy -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps" |
HEAP |
Java runtime options for memory management used when JMeter is started | "-Xms1g -Xmx1g -X:MaxMetaspaceSize=256m" |
JMETER_LANGUAGE |
Java runtime options to specify used language | "-Duser.language=en -Duser.region=EN" |
JMETER_OPTS |
Java runtime options used when JMeter is started | "" |
JVM_ARGS |
Optional java args, e.g. -Dprop=val | "" |
JMETER_GROUP_ID |
Set the jmeter user's group id inside the container | 1000 |
JMETER_USER_ID |
Set the jmeter user's id inside the container | 1000 |
Running clients and servers
Running standalone clients
Runner an interactive dockerized client in non-GUI mode
docker run --interactive --tty --rm --volume `pwd`:/jmeter egaillardon/jmeter --nongui --testfile test.jmx --logfile result.jtl
Runner a detached dockerized client in non-GUI mode
docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter --nongui --testfile test.jmx --logfile result.jtl
Running servers
Running a server on 192.168.1.1 with default RMI port (1099) and SSL for RMI disabled
docker run --detach --publish 1099:1099 --rm egaillardon/jmeter -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.1.1 -Jserver.rmi.localport=1099 --server
Running a server on 192.168.1.1 with specified RMI port (1098) and SSL for RMI disabled
docker run --detach --publish 1098:1098 --rm egaillardon/jmeter -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.1.1 -Jserver.rmi.localport=1098 -Dserver_port=1098 --server
Running clients in distributed tesing mode
Running a client in non-GUI mode with SSL for RMI disabled, connecting to a remote server on 192.168.1.1 with default RMI port (1099)
- with docker
docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile test.jmx --remotestart 192.168.1.1 --logfile result.jtl
- without docker
jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile ../test.jmx --remotestart 192.168.1.1 --logfile result.jtl
Running a dockerized client in non-GUI mode with SSL for RMI disabled, connecting to a remote server on 192.168.1.1 with specfied RMI port (1098)
- with docker
docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile test.jmx --remotestart 192.168.1.1:1098 --logfile result.jtl
- without docker
jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile ../test.jmx --remotestart 192.168.1.1:1098 --logfile result.jtl
Running a dockerized client in non-GUI mode with SSL for RMI disabled, connecting to the two remote servers on 192.168.1.1
- with docker
docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile test.jmx --remotestart 192.168.1.1:1098,192.168.1.1:1099 --logfile result.jtl
- without docker
jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile ../test.jmx --remotestart 192.168.1.1:1098,192.168.1.1:1099 --logfile result.jtl
An example that generates a report at the end of the run
docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter -Jserver.rmi.ssl.disable=true --nongui --testfile test.jmx --remotestart 192.168.1.1:1098,192.168.1.1:1099 --logfile result.jtl --forceDeleteResultFile --reportatendofloadtests --reportoutputfolder report -Jjmeter.reportgenerator.overall_granularity=10000
Full list of command-line options
Command
docker run --interactive --tty --rm egaillardon/jmeter
Result
--?
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
-E, --proxyScheme <argument>
Set a proxy scheme to use for the proxy 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 and web report folder if
present before starting 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
Tips and tricks
Stopping a server after the end of the test
Set the JMeter property server.exitaftertest
to true.
docker run --detach --publish 1099:1099 --rm egaillardon/jmeter -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.1.15 -Jserver.rmi.localport=1099 -Jserver.exitaftertest=true --server
Stopping a test before the end
Replace relaxed_kilby
by your client container id or name.
docker exec -it relaxed_kilby shutdonwn.sh
or
docker exec -it relaxed_kilby stoptest.sh
Setting a fixed RMI port on the client side
Set the JMeter property client.rmi.localport
(useful when there is a firewall between the client and servers).
docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter -Jserver.rmi.ssl.disable=true -Jclient.rmi.localport=2500 --nongui --testfile test.jmx --remotestart 192.168.1.15:1098,192.168.1.15:1099 --logfile result.jtl
Sending the content of the jmeter log file to console
Set the jmeterlogconf
option in order to use another log4j2.xml file (see the example file provided)
docker run --detach --publish 1099:1099 --volume `pwd`:/jmeter --rm egaillardon/jmeter -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.1.15 -Jserver.rmi.localport=1099 -Dserver_port=1099 --server --jmeterlogconf log4j2.xml
Running a client in GUI mode, with SSL for RMI disabled, to connect to remote servers
jmeter -Jremote_hosts=192.168.1.1 -Jserver.rmi.ssl.disable=true
SSL for RMI
In distributed testing, SSL for RMI has to be enabled or disabled on both sides. See Apache JMeter Remote Testing for more information.
Getting the IP address
- On Linux
hostname -I
/sbin/ifconfig eth0 | grep 'inet '| awk '{ print $2}'
- On macOS
ipconfig getifaddr en0
/sbin/ifconfig en0 | grep 'inet '| awk '{ print $2}'
Setting your timezone in the docker container
- Add the
TZ
environment variable
docker run --detach --publish 1099:1099 --env TZ=Europe/Paris --rm egaillardon/jmeter
Assigning the local user's id and group to the jmeter user inside the container
docker run --env JMETER_GROUP_ID=
/usr/bin/id -g --env JMETER_USER_ID=
/usr/bin/id -u --rm egaillardon/jmeter --server -Jserver.rmi.ssl.disable=true
Running JMeter in GUI mode from Docker using X11-forwarding (Pull request #2 submitted by @ericpeters)
Install Quartz
- Install the latest XQuartz X11 server (https://www.xquartz.org/) and run it
- Activate the option ‘Allow connections from network clients’ in XQuartz settings
- Quit & restart XQuartz (to activate the setting)
Run Interactive UI
# allow access from localhost
xhost + 127.0.0.1
docker pull egaillardon/jmeter
docker run -e DISPLAY=host.docker.internal:0 --interactive --tty --rm egaillardon/jmeter jmeter.sh
Changelog
-
Apache JMeter 5.3
- 5.3.0-1.0.1 :
- Update entrypoint.sh file.
- 5.3.0-1.0.0 :
- Base image adoptopenjdk/openjdk8:jdk8u252-b09-alpine
- JMeter 5.3
- 5.3.0-1.0.1 :
-
Apache JMeter 5.2.1
- 5.2.1-1.0.0 :
- Pull request #7 merged. Thank you, Davi S. Zucon
- JMeter 5.2.1
- 5.2.1-1.0.0 :
-
Apache JMeter 5.2
- 5.2.0-1.0.0 :
- Base image openjdk:8u212-jdk-alpine3.9
- JMeter 5.2
- 5.2.0-1.0.0 :
-
Apache JMeter 5.1.1
- 5.1.1-2.0.0 :
-
Issue #4 closed. Thank you, Philippe M
- Change the mirror system used to https://www-eu.apache.org/dist/jmeter/binaries/ from https://archive.apache.org/dist/jmeter/binaries
-
Issue #4 closed. Thank you, Philippe M
- 5.1.1-1.1.0 :
-
Pull request #2 merged. Thank you, @ericpeters
- Add fontconfig and ttf-dejavu packages to allow running GUI-mode/x11 forwarding.
- Add alpn-boot support for HTTP2 plugin.
- Issue #1 corrected. Thank you, Philippe M
-
Pull request #2 merged. Thank you, @ericpeters
- 5.1.1-1.0.0 :
- Base image openjdk:8u201-jdk-alpine3.9
- JMeter 5.1.1 r1855137
- 5.1.1-2.0.0 :
-
Apache JMeter 5.1
- 5.1.0-1.0.0 :
- Base image openjdk:8u191-jdk-alpine3.9
- JMeter 5.1 r1853635
- 5.1.0-1.0.0 :
-
Apache JMeter 5.0
- 5.0.0-2.1.1 :
- Update entrypoint.sh file.
- 5.0.0-2.1.0 :
- Add the ability to launch a command other than
jmeter
.
- Add the ability to launch a command other than
- 5.0.0-2.0.0 :
- Change base image from openjdk to openjdk-alpine : https://hub.docker.com/_/openjdk
- 5.0.0-1.2.0 :
- The jmeter user's id and its group id can be changed inside the container in order to avoid issue when mounting local volumes.
- 5.0.0-1.1.0 :
- Create jmeter's home directory, set STOPSIGNAL to SIGKILL and update links to download tgz and tgz.sha512 files
- 5.0.0-1.0.0 :
- JMeter 5.0 r1840935
- 5.0.0-2.1.1 :
-
Apache JMeter 4.0
- 4.0.0-2.1.1 :
- Update entrypoint.sh file.
- 4.0.0-2.1.0 :
- Add the ability to launch a command other than
jmeter
.
- Add the ability to launch a command other than
- 4.0.0-2.0.0 :
- Change base image from openjdk to openjdk-alpine : https://hub.docker.com/_/openjdk
- 4.0.0-1.3.0 :
- The jmeter user's id and its group id can be changed inside the container in order to avoid issue when mounting local volumes.
- 4.0.0-1.2.0 :
- Create jmeter's home directory, set STOPSIGNAL to SIGKILL and update links to download tgz and tgz.sha512 files
- 4.0.0-1.1.0 :
- Set the user
jmeter
when running the image
- Set the user
- 4.0.0-2.1.1 :