Need clarification on the Users execution for the Distributed Testing - jmeter

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.

Related

Jmeter remote testing hangs and throughput drops significantly

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

Jmeter- distributed testing, save separate results for each slave

I have 1 master and 2 slave machines setup. I want to create two separate summary report, one for each slave.
I know the question in duplicate of this question, but the solution provide does not work for me.
JMeter Slave Reporting in Distributed Testing
In my test plan I have summary report and have added "filename"(or complete path) under write results to file.
When I execute my test plan, result file is saved in master system with combined results of both the slaves. How can I get the response times of the requests executed with each slaves separately?
If you add a Listener to your Test Plan and configure it to save results into a file it will create a results file on each slave machine so once your test is done you will be able to fetch these results file from slaves and perform required analysis.
Assuming your configuration is good you should have 1 cumulative result on master and 2 separate results on each slaves.
Another option is using __machineName() or __machineIP() function as a sampler label prefix (or postfix) so you will be able to distinguish samplers coming from different slaves in the main .jtl results file. This approach will allow you to avoid unnecessary disk IO overhead during test execution required to generate an extra file with the results.
Once you test finishes you will be able to split main .jtl results file using Filter Results Tool to generate separate results files per slave basing on slave machine hostname or IP address.
You can install Filter Results Tool using JMeter Plugins Manager:

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.

How to configure different loads on slave machines in Jmeter?

Can someone please tell me the process to configure different load on slaves machines?
I would like to set different number of threads for different slaves.
Slave 1 - 60 threads
Slave 2- 100 threads
Slave 3- 200 threads
Also how does jmeter master manage load on slaves. If i have 1000 threads and 4 slave machines, would Jmeter run 250 threads on each slave machine?
Thanks
JMeter do not share its load between slaves.
The slaves will also get copy of your plan and execute them individually from respective slaves.
If you use 1 thread and 100 loops with 3 slaves, total number of hits would become 300 (100 from each slave).
Execute JMeter from command line, non-gui mode. Provide the slave, thread count etc..from command line. This way you can have control on the thread count per slave.

Resources