Jmeter remote testing hangs and throughput drops significantly - performance

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

Related

Jmeter with InfluxDB Data mismatch issue

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.

jmeter distributed testing slave finishes before schedule

i have a jmeter distributed system with 1 master and 4 slaves.
the test is configured to run for 60 minutes.
somehow suddenly a random slave finish the test and the load is distributed between the other 3.
all the slaves configured the same way.
the instances are aws ec2 instances on the same subnet
is there any explanation for this behaviour?
It might be the case you configured JMeter to stop thread when the error occurs yourself:
if you have marked settings under Thread Group it might be the case the Threads (virtual users) are being stopped or the whole test gets stopped on error
If unexpected error occurs there should be a corresponding entry in jmeter.log file, make sure to execute JMeter slave process providing log file location via -j command-line argument like:
./jmeter -s -j jmeter-slave.log .....
It might be the case your JMeter instance runs out of memory and the whole JVM gets terminated so make sure to properly tune it for high loads
Check operating system log of your Amazon instance
There could be multiple reason for it:
Possibly load balancing was not happening properly, more sets of request are getting drived toward one instance. That can cause the VM to crash
OR It could be the crashed AWS instance. The disk space got full.
I suggest you check the disk usage of crashed vm.

Need clarification on the Users execution for the Distributed Testing

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.

JMeter Slave Reporting in Distributed Testing

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.

How to get the combined result summary in master slave architecture using Jmeter

I have configured two slaves and one master machine.
After executing the performance test in Jmeter using the master slave architecture on master machine, I am getting the result log in slaves machines but I need a consolidated log summary. Please suggest me how can I get it?
Also, I need to know that how the load is distributed over the slave machines.
First question:
If you are talking about the logs (as in jmeter-server.log) there's no automatic way to collect them all. You could write a bash script or something similar to collect them from the servers.
Second question:
Every slave machine executes the full test plan completely on their own. That means that if you configure your test plan to include 10 threads, every slave will run with 10 threads giving you a total of 20.

Resources