-
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
egaillardon/jmeter
For a Docker image including JMeter plugins, see https://hub.docker.com/r/egaillardon/jmeter-plugins/
-
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)
- Where to get more information about Apache JMeter
- Where to get more information about Docker
The working directory defined in the Dockerfile is /jmeter
.
The default user is jmeter
.
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 |
docker run --interactive --tty --rm --volume `pwd`:/jmeter egaillardon/jmeter --nongui --testfile test.jmx --logfile result.jtl
docker run --detach --rm --volume `pwd`:/jmeter egaillardon/jmeter --nongui --testfile test.jmx --logfile result.jtl
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
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 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
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
docker run --interactive --tty --rm egaillardon/jmeter
--?
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
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
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
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
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
jmeter -Jremote_hosts=192.168.1.1 -Jserver.rmi.ssl.disable=true
In distributed testing, SSL for RMI has to be enabled or disabled on both sides. See Apache JMeter Remote Testing for more information.
- 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}'
- Add the
TZ
environment variable
docker run --detach --publish 1099:1099 --env TZ=Europe/Paris --rm egaillardon/jmeter
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 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)
# 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
-
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 :