Sign inSign up

rdpanek/jmeter

By rdpanek

•Updated almost 6 years ago

Dockerized JMeter with ElasticsearchBackendListener for live logging.

Image
2

4.9K

rdpanek/jmeter repository overview

⁠JMeter 5.3

⁠+ ElasticSearchBackendListenerClient v2.0

Dockerized JMeter with ElasticsearchBackendListener for live logging.

Travis: Build Status build result of build JMeter with ElasticsearchBackendListener, run Elasticsearch and run test with live logging to Elasticsearch.

⁠Image based on RHEL Atomic Base Image

⁠Plugins

- jpgc-dummy-0.2
- jpgc-casutg-2.6

⁠Elasticsearch 6.x

https://github.com/test-stack/elasticSearchBackendListenerClient⁠

ElasticsearchBackendListener

⁠Notice

When you use RHEL, CentOS, or Fedora, mount volume with Z option.

-v `pwd`:/jmeter:Z

Using Volumes with Docker can Cause Problems with SELinux⁠

⁠How to run as NON-GUI

⁠Run without Docker

jmeter --nongui --testfile testPlan.jmx

⁠Run with print command line options
docker run --name jmeter -it --rm rdpanek/jmeter:5.3.0
⁠Run with help
docker run --name jmeter -it --rm rdpanek/jmeter:5.3.0 --help
⁠Run as interactive
docker run --name jmeter -it --rm -v `pwd`:/jmeter rdpanek/jmeter:5.3.0 --nongui --testfile testPlan.jmx --logfile result.jtl
⁠Run as detached
docker run --name jmeter --detach --rm -v `pwd`:/jmeter rdpanek/jmeter:5.3.0 --nongui --testfile testPlan.jmx --logfile result.jtl
⁠Run as specify USER
docker run --name jmeter -it --rm -v `pwd`:/jmeter --user $(id -u):$(id -g) rdpanek/jmeter:5.3.0 --nongui --testfile testPlan.jmx --logfile result.jtl
⁠Run with log to stdout
docker run --name jmeter -it --rm -v `pwd`:/jmeter rdpanek/jmeter:5.3.0 --nongui --testfile testPlan.jmx -j /dev/stdout
⁠Run as server / generator
docker run --name generator1 --detach --publish 1098:1098 --rm rdpanek/jmeter:5.3.0 -Jserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.1.202 -Jserver.rmi.localport=1098 -Dserver_port=1098 --server

Stopping a server after the end of the test It's possible add this option -Jserver.exitaftertest=true

⁠Connect to generator
docker run --name controller -it --rm --volume `pwd`:/jmeter rdpanek/jmeter:5.3.0 -Jserver.rmi.ssl.disable=true --nongui --testfile testPlan.jmx --remotestart 192.168.1.202:1098,192.168.1.202:1099 --logfile result.jtl
⁠Generate HTML report after test end

Go to Documentation⁠

docker run --name controller --detach --rm --volume `pwd`:/jmeter rdpanek/jmeter:5.3.0 -Jserver.rmi.ssl.disable=true --nongui --testfile testPlan.jmx --logfile result.jtl --forceDeleteResultFile --reportatendofloadtests --reportoutputfolder report   -Jjmeter.reportgenerator.overall_granularity=1000

⁠13. Remote Testing with JMeter

Go to Documentation⁠

  • Management of multiple JMeterEngines from a single machine
  • No need to copy the test plan to each server - the client sends it to all the servers

Important The same test plan is run by all the servers. JMeter does not distribute the load between servers, each runs the full test plan. So if you set 1000 Threads and have 6 JMeter server, you end up injecting 6000 Threads.

Warning Remote mode does use more resources in client. It's reason what JMeter use Stripped mode. Check always JMeter client resources, that is not overloaded.

⁠Configure nodes

All nodes ( client and servers )

  • are running exactly the same version of JMeter
  • are using the same version of Java on all systems. Using different versions of Java may work but is discouraged.
  • copy of dataProvider ( e.g. csv ) with test-data must be on each JMeter server. Advantage is, that each generator can work with unique test-data.
⁠Start the servers / generators
  • On all servers run JMeter in remote node --server
  • Note that there can only be one JMeter server on each node unless different RMI ports are used.
  • By default, RMI uses dynamic ports for the JMeter server engine. This can cause problems for firewalls, so you can define the JMeter property server.rmi.localport to control this port numbers.
  • command line option for specify the remote hosts to us is --remotestart. Multiple servers can bbe added, comma-delimited.
⁠Environment variables
  • HEAP "-JXms2g -JXmx2g -JX:MaxMetaspaceSize=500m"
  • GC_ALGO JVM garbage collector options. Defaults to -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20

Get the list of ip addresses docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -a -q)

⁠VNC

Run docker image

docker run --name jmeter -it -v `pwd`:/tests --rm -p 5901:5901 rdpanek/jmeter:vnc-5.3.0

and connect via some VNC Viewer to localhost:5901 and password is secret

⁠k8s

Create config object

kubectl -n loadtest-1 apply -f k8s/jmeter-configmap.yaml

Start Performance Stack

kubectl -n loadtest-1 create -f k8s/perf-stack.yaml

Port Forward for VNC Viewer

kubectl -n loadtest-1 port-forward controller-0 5901:5901

Now, you can connect to controller via your favorite VNC Viewer localhost:5901

On Desktop you can use scripts

  • run-editor.sh Start JMeter
  • run-distrib-test.sh Start Distributed testing

⁠Perf Demo Web

docker run --name test-web --rm -p 8080:80 -d rdpanek/test-web:1.0

⁠Docker Compose

Define a run multiple containers

  • For JMeter distributed load testing, we need run 1 master and N slave containers.

Tag summary

Content type

Image

Digest

Size

310.5 MB

Last updated

almost 6 years ago

docker pull rdpanek/jmeter