I have a Jmeter setup where I have added backend listener as influxDB our setup is like we have individual EC2 instances act as single standalone server ( Distributed Master load test ).
So logically the rate of ActiveThreads going to generate the load is as follows:-
Desired-Behaviour - Thread group 2000 * Instance 10 = 20000 ( ACTIVE THREADS ).
Actual Behaviour - Instead we are getting 2000 as ACTIVE THREADS only.
We have tried deploying InfluxDB v1 and Influx v2 both and result ends the same.Grafana Dashboard with influxdb as datasource showing 2k active threads.
JMX thread group.
JMX file backend listener configs.
Can anyone please let me know if any configuration changes is needed to be done to generate this much amount of Load with active threads.
Given you properly configured:
JMeter in terms of Remote Hosts and RMI Configuration
Grafana in terms of properly setting up queries in panels
You should see the real number of active threads in your dashboard
Here is a demo, as you can see when I increase JMeter Slave pod count to 2 the number of threads increases twice.
Related
I have set up Jmeter 4.0 in Google cloud where a master talks to 12 slaves for load generation. For really low number of threads, the test works like a charm with the report being generated at the end.
However, when I increase the # threads per slave host to over 200, the test seems to hang and I do not see many requests on the server side. After the ramp up period, I do not see the activity being sustained for over 5 min and it trickles there after. I can verify with the DB counts - the rate drops a lot after the ramp up ends. At the end of the 30 min test, only some hosts seem to shut down and end the test gracefully while there is no info about the others. The java proc on the master keeps running even after 2 hours but not doing anything, i.e. 0 activity.
Has anyone seen an issue with remote testing and report generation?
Jai,
I would suggest to troubleshoot this issue with below steps:
Check the CPU/Memory utilization in Master and Slave nodes when you run the test
Increase the heap size in JMeter.bat file in Master and Slave nodes
Run your test in non-gui mode using below command:
jmeter -n -t script.jmx -R server1,server2,... -l Path\To\scriptresults.jtl
n to start Jmeter in a non-gui mode
t to define the jmeter file
r to start the remote server as defined in the JMeter properties file
R to define the list of servers and start them
About JMeter Distributed configuration for load testing (not in cloud),
I can setup X JMeter masters in different machines and execute them with shared files using shared folder(s).
The benefits are:
Each master is oblivious to other and can be shutdown and start when needed with dynamic/different properties.
Each master have its own logs and results that can be explored separately.
I don't need network connection between JMeter masters' machines.
What are the benefits for using master-slave configuration in such case? It seems like an unnecessary overhead when focusing on load test.
The benefits are:
centralization of results on 1 node (master), you can follow results in Summarizer from the master node, you have the CSV/XML file generated there and you can generate the web report at end of test using this
centralization of jmx plan on 1 node (master)
synchronization of the test from master, ie the master will start/stop the test from master
Besides the drawbacks you describe there are:
- network configuration complexity
- need to deploy csv on each node (although there are options with plugins (redis, simple table server)
- network traffic between nodes and master
It was created at time deployment automation was not available through things like vagrant, ansible, cloud ...
AS we know Jmeter have 2 mode to run test plans: single and master-slave mode
in single mode Jmeter summary report listener will collect min, max, stddev, error%,etc data and write in a file..
but in master-slave mode, these information are record by master server, and I have checked the Jmeter summary report codes, I can't understand which extends, methods or which codes make Jmeter slave servers can communicate with master server to let master server record these data, same question in Simple Data Writer listener.
So, can anyone help on this question, thank you very much!
Jmeter's slave communicate with master thanks to Java RMI. For this reason you need to start RMI registry before test. Since version 2.3.1 you don't need to do it manually, Jmeter server wil, take care of this.
It might be a silly question, but I need clarification before requesting for JMeter Infrastructure.
Here is what I understood for the below example scenario.
Master Machine --1; 2 Slave Machines; Total No.Of users 10;Test Duration :5 Mins
So what I have understood and noticed is, If I have executed the test with ONE slave Machine generates 30 Samples. If i have executed the test with 2 Slave machines it generates 60 Samples which i understand as per JMeter Distributed test design.But my only question is test executed for 20 Users?
Please clarify!
Thanks,
Rajani
Yes. If the test plan is configured to run with 10 users & if you run that in 2 slave machines, then it runs for 20 users in total (10 users / slave)
Note: 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.
[ http://jmeter.apache.org/usermanual/remote-test.html ]
You do NOT have to move the testplan (.jmx) to the slaves explicitly and It is done automatically which is good. But if the test is referring to any file for test data (say .csv for CSV dataset config) - you need to move those files to all the slaves yourself. JMeter will not do that and the test might fail in the slaves when the file is not present.
I am performing distributed testing using JMeter and getting collective result of all slaves on Master JMeter GUI.
Please let me know if it is possible to capture separate reports for each slave?
For example, I have configured 2 Slaves + 1 Master JMeter. On executing the test, I would like capture separate report of each slave.
Thanks!!
You can get per-slave results as follows:
Add a Listener or your choice to Test Plan
Specify Filename in "Write results to file" section and choose what you need to store via "Configure" button
Once test finishes you'll have to collect result files from slave machines
Be aware that:
By default not everything can be stored, i.e. response data is being removed form successful samples
Listeners have their cost. See Greedy Listeners - Memory Leeches of Performance Testing to get an idea regarding impact and why it is better to have them off during load test.
For your case, don't use distributed testing, just launch 1 separate JMeter per slave machine.