I am running a jmeter test with one master and two slave systems.
the values I provided in master system are:
no of threads: 750
ramp up: 420 seconds
loop count: 1
when I press ctrl+shift+R, the test execution begins on both "A" & "B" remote systems and the message
"Starting the test on host XXX.XXX.X.XXX # Mon Feb 8 08:08:21 IST 2016
"
is displayed on cmd prompt of both systems.
But after sometime I found that there is no response from server. I checked if there is any activity in the "summary listener", but there is no activity.
I checked the generated "summary.xlsx" file and found all the requests from system "A" have been served and only some of the requests from system "B" were served.
When I checked system A's cmd prompt it says
"Finished the test on host XXX.XXX.X.XXX # Mon Feb 8 08:08:21 IST 2016
".
(I think it is ok, because all its requests were served).
When I checked system B's cmd prompt I DIDN'T find the message
"Finished the test on host XXX.XXX.X.XXX # Mon Feb 8 08:08:21 IST 2016
".
Hoping that the requests of system B would be executed eventually, I left it for 8 hours.
But to my surprise when I checked it in the morning it was just, where I have last seen it.
No further requests from system B were executed, checked the server log no response there either. And I also didn't find the message
"Finished the test on host XXX.XXX.X.XXX # Mon Feb 8 08:08:21 IST 2016
"
on system B.
Please suggest me how I can get all the requests from both slave systems served without the above problem.
I can bet that the issue is in different subnets. Read the following step by step manual, especially limitations section:
RMI cannot communicate across subnets without a proxy; therefore neither can jmeter without a proxy.
So, make sure that both A and B are in the same subnet with master.
I assume that you are able to run a standalone/non-distributed test in Slave B w/o issues. If you have not checked that, please ensure if it works fine.
In this case, read this site. https://cloud.google.com/compute/docs/tutorials/how-to-configure-ssh-port-forwarding-set-up-load-testing-on-compute-engine/. It has good information on the jmeter communication during distributed testing.
I would check if the RMI ports on slave B are open.
Related
Running JMeter to Master & Slave machines, Slave is showing the script is started & finished, but at master showing "Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445", for this at master JMeter script execution not ended, so report and result not generated.
Though this script only contains a HTTP Request with a single thread, for execution it only needs few seconds. I waited for couple of hours, but not got the result.
How can i solve this problem?
for both Master & Slave machines I configured:
install jdk1.8.0_271 & jmeter5.3
on "jmeter.properties" i added : server_port=4000, client.rmi.localport=4000, server.rmi.port=4000, server.rmi.localport=4000
on "user.properties" i added : server.rmi.port=9999, server.rmi.localport=4000
Though this script only contains a HTTP Request with a single thread, for execution it only needs few seconds. - you're running it with 100 threads and 500 seconds ramp-up so it will run for 8 minutes at least (plus time required for the last user to execute the last iteration of the sampler)
The fact that the slave cannot report the test finished event and the results back to the master means that the slave cannot properly communicate with the master
Assuming all above you need to open 2 ports in the slave, i.e.
4000 for the SERVER_PORT
5000 for the server.rmi.localport
and run your slave as jmeter-server -Dserver.rmi.localport=5000 -Dserver_port=4000 -Jclient.rmi.localport=4000
master should be executed as jmeter -Jclient.rmi.localport=4000
All the aforementioned ports must be opened in the firewall.
More information:
Remote hosts and RMI configuration
Using a different port
JMeter Distributed Testing with Docker
I am able to successfully execute JMX file on local instance but execution on Remote system(Slaves) fails. I am using latest version of Jmeter. This is the second time I am facing the issue.
Can you please advise if I am missing anything here. I initially thought it was because I had toggled off the script from Execution but thats not the case here.
My script(JMX) has a Transaction controller(under a Thread group) with some http requests.
Code from command line executed is as below. Its the same result when I execute from Run>>Remote Start
sh Jmeter.sh -n -t R3Performance_Fragment.jmx -R 192.168.7.25 -G ucount=1 -l Results/r1.csv
Results are as below. It just starts and winds up without initiating the Execution at all.
Krishna-MBP:bin krishnap$ sh Jmeter.sh -n -t
R3Performance_Fragment.jmx -R 192.168.7.25 -G ucount=1 -l
Results/r1.csv Creating summariser Created the tree
successfully using R3Performance_Fragment.jmx Configuring remote
engine: 192.168.7.25 Starting remote engines Starting the test # Mon
May 29 13:07:40 IST 2017 (1496043460922) Remote engines have been
started Waiting for possible Shutdown/StopTestNow/Heapdump message on
port 4446 summary = 0 in 00:00:00 = ******/s Avg: 0 Min:
9223372036854775807 Max: -9223372036854775808 Err: 0 (0.00%)
Tidying up remote # Mon May 29 13:07:43 IST 2017 (1496043463653) ...
end of run
Check the .jmx file you uploaded. If you are using any .csv file. Need to change the location of it. It will be pointing to your local machine. Change it to remote machines address
The answer is always in jmeter.log file:
Look into jmeter.log file on master for any suspicious entries
Run JMeter slave instance(s) like:
jmeter ${RMI_HOST_DEF} -Dserver_port=${SERVER_PORT:-1099} -s -j jmeter-server.log -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx -Dserver_port=xxxx -s -j jmeter-server.log
Look into jmeter-server.log file on remote slave(s)
Most likely your test fragment configuration is not correct. JMeter is not smart enough to copy dependencies (external .jmx files) automatically, you should copy it to all remote slave(s) manually prior to starting the test. The same applies to i.e. CSV configuration files, files you will be uploading, etc. Other reasons could be in:
0 threads (virtual users)
disabled thread group/transaction controller
incorrect test fragment reference
See the following guides for more information:
JMeter Distributed Testing Step-by-step
How to Manage Large JMeter Scripts With JMeter Test Fragments
In our pacemaker + corosync cluster
Last updated: Thu Oct 22 21:16:33 2015
Last change: Thu Oct 22 17:25:13 2015 via cibadmin on aws015
Stack: corosync
Current DC: aws015 (2887647247) - partition with quorum
Version: 1.1.10-42f2063
4 Nodes configured
16 Resources configured
We have follow situation. We write python LSB script, that check status of some application, and make it as a resource:
primitive pm2_app_gardenscapesDynamo_lsb lsb:pm2_app_gardenscapesDynamo \
op start interval="0" timeout="60s" \
op stop interval="0" timeout="60s" \
op monitor interval="30s" timeout="60s" on-fail="restart" \
meta failure-timeout="10s" migration-threshold="1"
This check is made by utility that can hung (LSB script launch that utility, and wait for reply from it). So when pacemaker reach timeout, it kill our python script, but hung utility still exists in memory, and doesn't dies.
Is it possible to prevent this situation?
You need to upgrade to pacemaker 1.1.12 or more recent.
The reason this happens is because pacemaker starts resource agents in their own process group. When an operation times out, pacemaker (1.1.10) kills the RA only, leaving any child processes it might have started as "orphaned".
Version 1.1.12 instead kills the entire process group.
The relevant code is in lib/common/mainloop.c, function child_kill_helper
I setup a distributed load testing environment using JMeter in unbundu machines.
->Master: the system running JMeter GUI, control each slave.
->Slave: the system running jmeter-server, receive command from the master and send a request to server under test.
->Target: the web server under test, get request from slaves.
Basic requirements are done:
-The firewalls on the systems are turned off
-All the planned master and Slaves are in the same subnet
-The JMeter server can access the target.
-Same version of JMeter on all the systems (version 2.3.4 ).
I did the following:
1) Tried pinging form master to slave and vice versa through ubundu terminal. its happening ..
2) Added the following to client (master) jmeter.properties:
# Remote hosts and RMI configuration
remote_hosts=192.168.0.139:1099
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=1099
3) Added the following to server (Slave) jmeter.properties:
# On the server(s)
set server_port=1234
start rmiregistry with port 1234
4) Now started the Jmeter engine on Master.
a) Started Jmeter on master machine (GUI)
b) Created test plan--> (added tread group , samplers and required listners)
c) Now start the Slave(s) from the GUI
-click Run at the top
-select Remote start
-select the IP address
But error popup came as :-
"Connection refused to host : 192.168.0.139; nested exception is : java.net.ConnectionException : Connection Refused"
what may be the reason for not connecting with the remote salve (say here : 192.168.0.139)
DO i need to do any more configuration in jmeter.properties file or in any other files (in both slave and master)?
I think you forgot to start the slave in "slave mode".
In command line mode, go to jmeter/bin directory and execute jmeter-server.bat
That will start the slave process and will keeps it listening for commands.
Then you can go forward, loading amd launching the script.
have a look at:
http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdf
Also be aware that:
- the two systems MUST run the same Jmeter version
- the two systems MUST be on the same subnetwork
- the two systems SHOULD be as similar as possible: same OS, same directory tree, etc
- "remote_hosts" only require the address. The port is specified by "server_port" parameter.
I'm been using JMeter on a linux box, under the command line for a little bit. works fine.
Today, I tried it on a windows box (new client, etc) and it does work but the OUTPUT is waay different, in the console window.
The linux version dumps to the console a running commentary of what is going on -> Min/Max/Throughput/Error messages, etc. etc.
On windows, there's non of that.. eg..
C:\Users\Administrator>c:\temp\jakarta-jmeter-2.3.4\bin\jmeter -n -t "C:\Users\A
dministrator\Desktop\JMeter Test Files\MyProject.jmx" -Dthrea
ds=10 -Dloop=10 -Drampup=1
Created the tree successfully using C:\Users\Administrator\Desktop\JMeter Test Files\MyProjectjmx
Starting the test # Fri Oct 23 21:08:37 PDT 2009 (1256357317843)
Waiting for possible shutdown message on port 4445
Tidying up ... # Fri Oct 23 21:09:09 PDT 2009 (1256357349008)
... end of run
Is there a setting i need to set? something i'm missing from the configuration file?
Note: Please don't tell me to stick with the Linux version - lets keep any religious wars out of this discussion.
Basically when you are running your script from windows, you are not mentioning where your output should store. Check if you are using any listeners and storing the results somewhere on the windows box.
You can add one more parameter as - -l in the command line to get the help