PerfMon reports in JMeter using non-gui mode - jmeter

Im running load test using JMeter 5.1.1 in non-gui mode, And I need to capture server's RAM & CPU utilization separately during the test execution.
So that I kept PerfMon Metrics Collector plugin inside the Jmeter's test plan (CPU and RAM separately) and started the Server Agent in the hosted server.
And when I start executing load test in non-gui, I can get below mentioned tets connection commands in the command prompt window,
INFO 2019-07-10 12:03:46.485 [kg.apc.p] (): Binding UDP to 4444
INFO 2019-07-10 12:03:47.486 [kg.apc.p] (): Binding TCP to 4444
INFO 2019-07-10 12:03:47.486 [kg.apc.p] (): JP#GC Agent v2.2.3 started
INFO 2019-07-10 12:05:21.595 [kg.apc.p] (): Accepting new TCP connection
INFO 2019-07-10 12:05:21.595 [kg.apc.p] (): Yep, we received the 'test' command
INFO 2019-07-10 12:05:21.611 [kg.apc.p] (): Starting measures: memory:
INFO 2019-07-10 12:05:21.627 [kg.apc.p] (): Accepting new TCP connection
INFO 2019-07-10 12:05:21.627 [kg.apc.p] (): Yep, we received the 'test' command
INFO 2019-07-10 12:05:21.627 [kg.apc.p] (): Starting measures: cpu:
But when I place the corresponding .jtl/.csv/.xml file in the PerfMon Metrics Collector listener, CPU & RAM reports is displaying with wrong result. Also both the CPU & RAM results showing same report only.
RAM Report:
CPU Report:
Is there any other solution to overcome this issue?

I had the same problem. I found a solution. Simply add a jtl file on the Perfmon Metrics listener - this file name is for Perfmon only and should have a different name than your jtl file specified in non-gui command line. It will log when run in non-gui mode.

Related

I can't start Apache Nifi

When I run run-nifi.bat it pops up for a split second but then auto closes. I don't really understand this, I just need it for a university class and it hadn't been properly explained, so I'm just trying on my own really.
I get this in my nifi-app.log:
2021-05-29 17:07:30,179 INFO [main] org.apache.nifi.NiFi Launching NiFi...
2021-05-29 17:07:30,450 INFO [main] org.apache.nifi.security.kms.CryptoUtils Determined default nifi.properties path to be 'D:\SYSTEM\Downloads\nifi-1.13.2-bin\nifi-1.13.2\.\conf\nifi.properties'
2021-05-29 17:07:30,454 INFO [main] o.a.nifi.properties.NiFiPropertiesLoader Loaded 188 properties from D:\SYSTEM\Downloads\nifi-1.13.2-bin\nifi-1.13.2\.\conf\nifi.properties
2021-05-29 17:07:30,465 INFO [main] org.apache.nifi.NiFi Loaded 188 properties
2021-05-29 17:07:30,705 INFO [main] org.apache.nifi.BootstrapListener Started Bootstrap Listener, Listening for incoming requests on port 63487
2021-05-29 17:07:30,711 ERROR [main] org.apache.nifi.NiFi Failure to launch NiFi due to java.net.ConnectException: Connection refused: connect
java.net.ConnectException: Connection refused: connect
at java.base/sun.nio.ch.Net.connect0(Native Method)
at java.base/sun.nio.ch.Net.connect(Net.java:576)
at java.base/sun.nio.ch.Net.connect(Net.java:565)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333)
at java.base/java.net.Socket.connect(Socket.java:645)
at java.base/java.net.Socket.connect(Socket.java:595)
at org.apache.nifi.BootstrapListener.sendCommand(BootstrapListener.java:102)
at org.apache.nifi.BootstrapListener.start(BootstrapListener.java:74)
at org.apache.nifi.NiFi.<init>(NiFi.java:102)
at org.apache.nifi.NiFi.<init>(NiFi.java:71)
at org.apache.nifi.NiFi.main(NiFi.java:303)
2021-05-29 17:07:30,712 INFO [Thread-0] org.apache.nifi.NiFi Initiating shutdown of Jetty web server...
2021-05-29 17:07:30,712 INFO [Thread-0] org.apache.nifi.NiFi Jetty web server shutdown completed (nicely or otherwise).
I've tried editing the web properties in the config files in case the default was wrong. Right now it's on, but the errors are the same:
nifi.web.http.host=localhost
nifi.web.http.port=9090
nifi.web.http.network.interface.default=
I have Windows 10 Home Edition.
NiFi requires Java 8 or Java 11 to run. So your environment variables should point to the correct directory with Java 8 or Java 11.
Have you tried setting the JAVA_HOME environment variable? I would recommend checking the config files and telling the configs where to find the Java installation
You might be missing URL ACL
Maybe you can try below command:
netsh http add urlacl url=http://computername:port/ user=username
Source: https://serverfault.com/a/246798/191420

Jmeter doesn't show results when executed on slave, both GUI and CLI

Introduction:
I'm new to Jmeter, so I'm working with basic tasks but I have a mentor. We are working with distributed architecture, one master and one slave in my local network executing a real world working testplan.
Problem:
No response from slave:
We have installed and configured Jmeter 5.3 and java version "1.8.0_271" in both slave and master with windows 10 machines. Each machine can ping the other. When the testplan is executed in the master, from the JMeter GUI or CLI, the slave recognize the order and start the process, it also notify the end, but there is no response in the .jtl file another than the file header. We have tried with RMI enabled and disabled. The logs don't show errors.
System specs:
OS W10, Jmeter 5.3, Java 1.8, Jmeter plugin: jmeter-plugins-manager-1.4.jar (Plugins installed: Custom Thread Groups, 3 Basic Graphs, Console Status Logger), Windows Firewall is disabled in both machines, Jmeter properties (Master remote_hosts: Slave ip, Slave remote_hosts: 127.0.0.1)
JMeter GUI execution log (Master):
2020-12-11 11:33:45,446 INFO o.a.j.e.DistributedRunner: Configuring remote engine: 192.168.1.135
2020-12-11 11:33:45,446 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,624 INFO o.a.j.e.DistributedRunner: Starting distributed test with remote engines: [192.168.1.135] # Fri Dec 11 11:33:45 CET 2020 (1607682825623)
2020-12-11 11:33:45,624 INFO o.a.j.e.ClientJMeterEngine: running clientengine run method
2020-12-11 11:33:45,629 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,629 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,630 INFO o.a.j.s.BatchSampleSender: Using batching (client settings) for this run. Thresholds: num=100, time=60000
2020-12-11 11:33:45,630 INFO o.a.j.s.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2020-12-11 11:33:45,630 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,630 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,630 INFO o.a.j.s.BatchSampleSender: Using batching (client settings) for this run. Thresholds: num=100, time=60000
2020-12-11 11:33:45,630 INFO o.a.j.s.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2020-12-11 11:33:45,630 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,630 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,630 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,630 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,641 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,641 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to 'true'
2020-12-11 11:33:45,641 INFO o.a.j.s.BatchSampleSender: Using batching (client settings) for this run. Thresholds: num=100, time=60000
2020-12-11 11:33:45,641 INFO o.a.j.s.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2020-12-11 11:33:48,060 INFO o.a.j.e.ClientJMeterEngine: sent test to 192.168.1.135 basedir='.'
2020-12-11 11:33:48,060 INFO o.a.j.e.ClientJMeterEngine: Sending properties {}
2020-12-11 11:33:48,075 INFO o.a.j.e.ClientJMeterEngine: sent run command to 192.168.1.135
2020-12-11 11:33:48,075 INFO o.a.j.e.DistributedRunner: Remote engines have been started:[192.168.1.135]
2020-12-11 11:33:48,721 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, 192.168.1.135)
2020-12-11 11:35:49,030 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, 192.168.1.135)
JMeter CLI interface:
Creating summariser <summary>
Created the tree successfully using fileExample.jmx
Configuring remote engine: 192.168.1.135
Starting distributed test with remote engines: [192.168.1.135] # Fri Dec 11 12:41:46 CET 2020 (1607686906826)
Remote engines have been started:[192.168.1.135]
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary = 0 in 00:00:00 = ******/s Avg: 0 Min: 9223372036854775807 Max: -9223372036854775808 Err: 0 (0.00%)
Tidying up remote # Fri Dec 11 12:43:51 CET 2020 (1607687031041)
... end of run
Guides and articles read:
Our own guide, which has worked in the past (installed in production), based in:
https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html
https://jmeter.apache.org/usermanual/remote-test.html
JMeter Summary report in distributed mode
https://loadium.com/blog/jmeter-distributed-testing-step-by-step/
https://cwiki.apache.org/confluence/display/jmeter/JMeterFAQ#How_to_do_remote_testing_the_.27proper_way.27.3F
Question:
So the question is basically what can be wrong to make the server recognize the start calls, send the end signal, but don't write the .jtl file.
EDIT WITH SOLUTION
The .csv file in what the test are based must be in the slave inside the JMeter bin folder /bin/data/yourFile.csv
How about slave log? Given the symptoms I can think of 3 possible reasons:
Your test relies on external data file, i.e. CSV file or .properties file, if this is the case - you need to copy all the dependent files to all the slave machines
Your test relies on a plugin which is not installed on the slave(s), either copy your JMeter installation from master to all the slaves or use JMeter Plugins Manager to install the missing plugins
Your RMI configuration is not correct, i.e. port which is used for communication from the slave to the master is random by default, you might want to set it explicitly and open it in firewall
In order to be able to tell more I need to see your jmeter-server.log file (it's being generated in "bin" folder of your JMeter installation given you launch the slave process via jmeter-server.bat file, if you use other approach you can set the desired log file name/location via -j command-line argument

Distributed load testing with JMeter

I am trying to run the Jmeter Load test with master slave configuration. The connectivity between Master and Slave is working up and fine. But when i am triggering the remote test from master i am getting the following error.
I have made the Slave server (Jmeter-server.bat file) ON
Jmeter Log
2018/03/27 12:26:45 INFO - jmeter.engine.DistributedRunner: Configuring remote engine: 10.101.43.14
2018/03/27 12:26:45 INFO - jmeter.engine.DistributedRunner: Starting remote engines
2018/03/27 12:26:45 INFO - jmeter.engine.DistributedRunner: Starting the test # Tue Mar 27 12:26:45 BST 2018 (1522150005491)
2018/03/27 12:26:45 INFO - jmeter.engine.ClientJMeterEngine: running clientengine run method
2018/03/27 12:26:45 INFO - jmeter.samplers.BatchSampleSender: Using batching (client settings) for this run. Thresholds: num=100, time=60000
2018/03/27 12:26:45 INFO - jmeter.samplers.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2018/03/27 12:26:45 INFO - jmeter.engine.ClientJMeterEngine: sent test to 10.101.43.14 basedir='.'
2018/03/27 12:26:45 INFO - jmeter.engine.ClientJMeterEngine: Sending properties {}
2018/03/27 12:26:45 INFO - jmeter.engine.ClientJMeterEngine: sent run command to 10.101.43.14
2018/03/27 12:26:45 INFO - jmeter.engine.DistributedRunner: Remote engines have been started
**2018/03/27 12:26:45 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(true,10.101.43.14)
2018/03/27 12:26:45 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(false,10.101.43.14)**
How can I resolve this issue?
I don't see any errors there, looking into the output it appears that slave engine started the test and it immediately finished. There could be several reasons:
Your test is very short, i.e. it has only one sampler. If this is the case - check .jtl results file on JMeter Master host.
There is a problem with your test, the reasons could be in:
You use different JMeter versions on master and slave
You use different Java versions on master and slave
Your test uses a JMeter Plugin which is not installed on the slave while present on master host
Check jmeter-server.log file which should be generated in JMeter's "bin" folder on the slave machine for any suspicious entries, if you have problems with interpreting the log file - update your question with its contents. It would be good to take a look at jmeter.log file on master node as well.
In the mean time I would recommend getting familiarized with the next articles:
Remote Testing
How to Perform Distributed Testing in JMeter
JMeter Distributed Testing Step-by-step

Setting up a RocketMQ cluster: slave not visible & not replicating

I'm trying to set up a RocketMQ cluster, with a single name server, 1 master and 2 slaves. But, I'm running into some problems.
The version I'm running is downloaded from github/rocketmq-all-4.1.0-incubating.zip.
The brokers are run using mqbroker -c broker.conf, where broker.conf
differs for master and slave. For the master I have:
listenPort=10911
brokerName=mybroker
brokerClusterName=mybrokercluster
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
And for slaves:
listenPort=10911
brokerName=mybroker
brokerClusterName=mybrokercluster
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
The second slave has brokerId=2.
Brokers start up fine, some parts of the logs for a slave:
2017-10-02 20:31:35 INFO main - brokerRole=ASYNC_MASTER
2017-10-02 20:31:35 INFO main - flushDiskType=ASYNC_FLUSH
(...)
2017-10-02 20:31:35 INFO main - Replace, key: brokerId, value: 0 -> 1
2017-10-02 20:31:35 INFO main - Replace, key: brokerRole, value:
ASYNC_MASTER -> SLAVE
(...)
2017-10-02 20:31:37 INFO main - Set user specified name server address:
172.22.1.38:9876
2017-10-02 20:31:37 INFO ShutdownHook - Shutdown hook was invoked, 1
2017-10-02 20:31:37 INFO ShutdownHook - shutdown thread
PullRequestHoldService interrupt false
2017-10-02 20:31:37 INFO ShutdownHook - join thread PullRequestHoldService
eclipse time(ms) 0 90000
2017-10-02 20:31:37 WARN ShutdownHook - unregisterBroker Exception,
172.22.1.38:9876
org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to
<172.22.1.38:9876> failed
at
org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:359)
~[rocketmq-remoting-4.1.0-incubating.jar:4.1.0-incubating]
at
org.apache.rocketmq.broker.out.BrokerOuterAPI.unregisterBroker(BrokerOuterAPI.java:221)
~[rocketmq-broker-4.1.0-incubating.jar:4.1.0-incubating]
at
org.apache.rocketmq.broker.out.BrokerOuterAPI.unregisterBrokerAll(BrokerOuterAPI.java:198)
~[rocketmq-broker-4.1.0-incubating.jar:4.1.0-incubating]
at
org.apache.rocketmq.broker.BrokerController.unregisterBrokerAll(BrokerController.java:623)
[rocketmq-broker-4.1.0-incubating.jar:4.1.0-incubating]
at
org.apache.rocketmq.broker.BrokerController.shutdown(BrokerController.java:589)
[rocketmq-broker-4.1.0-incubating.jar:4.1.0-incubating]
at org.apache.rocketmq.broker.BrokerStartup$1.run(BrokerStartup.java:218)
[rocketmq-broker-4.1.0-incubating.jar:4.1.0-incubating]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_141]
2017-10-02 20:31:37 INFO ShutdownHook - Shutdown hook over, consuming total
time(ms): 25
2017-10-02 20:31:45 INFO BrokerControllerScheduledThread1 - dispatch behind
commit log 0 bytes
2017-10-02 20:31:45 INFO BrokerControllerScheduledThread1 - Slave fall
behind master: 0 bytes
2017-10-02 20:31:45 INFO BrokerControllerScheduledThread1 - register broker
to name server 172.22.1.38:9876 OK
2017-10-02 20:32:15 INFO BrokerControllerScheduledThread1 - register broker
to name server 172.22.1.38:9876 OK
As I suspect the broker is trying to connect to the name server, which
isn't running initially, so it retries and eventually succeeds?
However, later when trying clusterList I only see one broker listed, which happens to be a slave (172.22.1.17) and has brokerId=2 in the configuration (although here it's listed as 0):
$ ./mqadmin clusterList -n 172.22.1.38:9876
#Cluster Name #Broker Name #BID #Addr
#Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour
#SPACE
mybrokercluster mybroker 0 172.22.1.17:10911
V4_1_0_SNAPSHOT 0.00(0,0ms) 0.00(0,0ms) 0
418597.80 -1.0000
Moreover, when sending messages to the master, I get SLAVE_NOT_AVAILABLE.
Why is that? Are the brokers configured properly? If so, wy does
clusterList report them incorrectly?
you should change slave port,as you know 10911 has been used by anthoer process(master node),slave should be use different tcp port(eg.10921/10931 and so on)
tips:my cluster deploy on one machine,so i changed tcp port and startup successful,if you master&slave deploy on different machine and startup failed,you should visit rocketmq error log for more information.
notice:one master which have more than one slave,brokerId should be different

JMeter remote test fails with error message "Engine is busy - please try later"

I get an error when using jmeter with one master and one remote node. I did this steps:
Java & JMeter versions are the same (whith JMeter plugins)
I started the JMeter Server in the remote node
I added the remote node IP to the properties file of the master
I startet JMeter on the master and started the test script via remote start (the command line of the master contains "Using remote object …" with the correct IP
After that JMeter freezes and after 7 minutes I get the error Message "Engine is busy - please try later".
The Log of the master is:
2014/05/06 14:17:33 INFO - jmeter.gui.action.RemoteStart: Initialising remote engine: 172.19.147.41
2014/05/06 14:17:33 INFO - jmeter.engine.ClientJMeterEngine: running clientengine run method
2014/05/06 14:17:33 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2014/05/06 14:17:33 INFO - jmeter.samplers.BatchSampleSender: Using batching (client settings) for this run. Thresholds: num=100, time=60000
2014/05/06 14:17:33 INFO - jmeter.samplers.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2014/05/06 14:17:33 INFO - jmeter.samplers.BatchSampleSender: Using batching (client settings) for this run. Thresholds: num=100, time=60000
2014/05/06 14:17:33 INFO - jmeter.samplers.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2014/05/06 14:25:50 ERROR - jmeter.engine.ClientJMeterEngine: Error in rconfigure() method java.lang.IllegalStateException: Engine is busy - please try later
2014/05/06 14:25:50 INFO - jmeter.engine.ClientJMeterEngine: Interrupting RMI Reaper
The log of the remote node:
2014/05/06 14:17:33 INFO - jmeter.samplers.BatchSampleSender: Using batching for this run. Thresholds: num=100, time=60000
2014/05/06 14:17:33 INFO - jmeter.samplers.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2014/05/06 14:17:33 INFO - jmeter.samplers.BatchSampleSender: Using batching for this run. Thresholds: num=100, time=60000
2014/05/06 14:17:33 INFO - jmeter.samplers.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2014/05/06 14:25:50 INFO - jmeter.engine.RemoteJMeterEngineImpl: Creating JMeter engine on host 172.19.147.41 base '.'
2014/05/06 14:25:50 INFO - jmeter.engine.RemoteJMeterEngineImpl: Remote client host: 172.19.147.38
2014/05/06 14:25:50 WARN - jmeter.engine.RemoteJMeterEngineImpl: Engine is busy - cannot create JMeter engine
Did I forget to add some configuration or where is the problem?
Thanke in regards...
This error is because of the slaves are still executing previous test plan.
i would suggest.
while stopping the jmeter tests , use 'Remote Stop all' option from master, which kills the running threads on remote/slave machine process.
2.Restart[relaunch the "jmeter-server.bat"] on the slave/remote jmeter process and start the test.
Your problem is that the runners(slaves) are still running the test from your first start command even though you tried to end the test. Previous answers on Stack did not work for me in solving this problem so here's my solution:
On every runner(slave) do the following:
1. kill -9 `pidof java`
This will kill all Java processes so be careful if running other applications.
2.cd into apache-jmeter/bin directory and type ./jmeter-server &
This will restart your runners(slaves) as jmeter-servers so they are ready to receive communication from the master.
Then you should be able to successfully restart your test from master.
IN your case , it seems you triggered the test from master twice.
So the message is saying to you, a test is currently running on slave , cannot start a new one.
How do you start test from controller ? and how do you start jmeter-server from slave node ?
Error in NonGUIDriver java.lang.IllegalStateException: Engine is busy - please try later
This error occurs while running JMeter in non-GUI mode. JmeterApacheJMeter.jar process aborts on master without sending STOP signal to slaves to specify the test status.
Perform steps below to fix the issue on Slave machines:
Step#1 : Kill any running JMeter-server agent process on JMeter Slave/s
ps ax | grep "ApacheJMeter.jar" | awk '{print $1}' | xargs kill
Step#2 : Start JMeter-server process on Slave/s
cd apache-jmeter-folder/bin/; ./jmeter-server &
Now resume your performance test on JMeter master.

Resources