PerfMon Metrics Collector - Error in JMeter - performance-testing

Need to know the reason for the below mentioned error, while runnig the recorded script in JMeter to calculate the hosted server's CPU, RAM utilization & performance result. Before running the test script I started the Server Agent in my hosted server to calculate the CPU & RAM utilization of hosted server's machine.
When I connect my local machine using LAN connection and start running the JMeter script, I can get my CPU & RAM utilization status as mentioned in below image-1.
And when I connect my local machine using WIFI connection and start running the JMeter script, I cannot track my CPU & RAM utilization status and java.net.ConnectException:Connection timed out: connect error message displays as mentioned in below image-2.
Please let me know the solution for this issue.

Most probably your WiFi Connection resides in the different subnet therefore JMeter cannot establish connection with the server agent.
Check subnet masks on JMeter and ServerAgent hosts, if it is not the same - most likely you won't be able to connect without specific IP routing settings. You can talk to your network administrator to resolve it.
If you won't be able to connect to port 4444 of the host where the ServerAgent is running using telnet command (or equivalent) - JMeter's Perfmon Metrics Collector listener will not be able to fetch the data as well.
According to What’s the Max Number of Users You Can Test on JMeter? article you should not be running the load test over WiFi so I would strongly recommend reconsidering your approach and switching back to LAN for tests execution. If you need to see how your application behaves when it is being accessed over WiFi - you can simulate slower connections by controlling JMeter's bandwidth

Related

Netty server shutdown takes a long time

I have a Netty server that mobile clients connect to through an AWS load balancer, i.e. all the open TCP sockets have the AWS load balancer on the other end. There are typically concurrent connections from about 500k clients to each instance.
A problem is that to deploy fixes and react quickly to production issues we want deployment of a new code update to be fairly quick and have therefore set timeouts for server restarts to be quite low. However, deployments often fail, because restarting the server can take many minutes even though CPU usage is typically only 10-15% and memory about 50%.
Are there some kernel timeouts that could be the reason here? Any kernel or Netty parameters that could be tuned to speed up tearing down the server. We use systemctl restart during deployment.

Load testing in mac and redhat OS throwing j.n.SocketException: Too many open files

we are doing the large loading testing(50000TPS)using gatling, we are using Red Hat Enterprise Linux Server VM's for performing the testing.
Load testing is good with 500 TPS for single VM(4cpu and 8gb ram), More than 500 TPS we are not achieving the our target metrics
Running more than 3000 TPS in single machine we are facing following errors
j.n.SocketException: Too many open files
connect(..) failed: Cannot assign requested address 67328 (80.49%)
Note: I'm executing the gradle load test task from same shell where Ulimit and port ranges are increased
Steps we have tried so far
we have Increased the TCP local_port_range values(1024 65533) in load test vms
Configured the Ulimit to unlimited/higher values to higher in load test vms
kindly anyone advise us on this
Reference:
Max open files per process
https://www.ibm.com/docs/en/i/7.4?topic=utilities-ulimit
Try tuning network settings: https://gatling.io/docs/gatling/reference/current/core/operations/#kernel-and-network-tuning
Also is that limit 3000 TPS or users per second? Depending on injection profile Gatling may add new users every second, ignoring that previous one are still active, this way you can end with hundreds of thousands open connection. Check logs for how many active users you have, if it is way above your desired TPS, then either you need a faster network, or faster app.
Gatling can generate really high load (my record is over 300k tps from a single machine) but system under test need to be fast enough to process that requests, otherwise you end up with too many open connections.

Big Outgoing traffic on windwos azure

I have a vm on Windows Azure running centos6 as dev node, and have recently experiencing a huge increase in outgoing traffic.
VM was stopped and after started by 1 day it shows 236.63 GB on outgoing traffic, server not running any applications, only 1 landing page.
need help how to detect what causing the traffic and how to prevent it, since it's reflecting badly on my bill.

JMeter never fails

I'm trying to stress test a server with JMeter. I followed the manual and successfully created the tests (Test are running ok and response is correct).
However even if I keep increasing the number of threads it never fails, but I keep reading that there must be limitations? So what am I doing wrong?
My CPU is running on +/-5% when I'm not running JMeter. Running 3000 threads I see the number of threads increase by 3000 and CPU usage goes to +/-15%. Also JMeter never complains something went wrong.
My JMeter configuration is:
Number of threads: 3000
Ramp-Up Period: 30
LoopCount: Forever (Let it run for over an hour and still nothing goes wrong)
The bottleneck now is my internet connection which simply can't handle this load and maxes out at 2.1Mbps. Is this causing the problem? It is increasing my latency from 10ms per thread to over 5000ms per thread, but threads are still running.
Assuming you have confirmed that you definitely aren't getting back any errors (e.g. using a results table listener, or logging/displaying only errors using a results graph listener) and your internet connection is running at capacity then yes, it does sound like your internet connection is the bottleneck. It doesn't sound like your server is being stressed at all.
If you can easily make use of other machines (e.g. servers in the same location as the server you are testing), you could try using JMeter remote (distributed) testing to sidestep the limitations of your internet connection. See http://jmeter.apache.org/usermanual/remote-test.html for details.
Alternatively, if it's easy (e.g. if you're using VM's in a cloud and can easily spin one up with your software on), you could try using the least-powerful server you can instead and stress testing that to see if you can make it struggle even with your internet connection (just as a sanity check).
If this doesn't help, more details on your server (hardware specifications, web server software and thread pool settings, language) and the site/pages you are testing (mostly static or dynamic? large requests/responses?) would be useful. I've certainly managed to make lower-powered machines (e.g. EC2 m1.small) struggle using JMeter over a 2Mbps connection, but it depends on the site you're testing.

Performance/Load testing

I wish to do a performance test on my site, simulating thousands of user and find per server capacity limit. The tool I'm using is jmeter and I have prepared a .jmx for the test scenario. But when I try to simulate 1000 of users simultaneously I start to get:
<httpSample t="0" lt="0" ts="1338538936990" s="false" lb="VerifyPassword" rc="Non HTTP response code: java.net.SocketException" rm="Non HTTP response message: Too many open files" tn="LoadConfig 1-901" dt="text" by="1375"/>
I think the error is on the client side because of the too many socket connection. If so how can I simulate the case from my local machine? Can I increase the number of open sockets on linux?
Also one thing I discover testing from a single client can give false alarm where the client is the bottleneck and the server works fine. How can I do a performance testing such that I simulate a real life scenario such that I have 10K+ users each have its own CPU/ RAM and then do a performance testing?
I have run JMeter from .NET but I think will be the same for your case.
You cannot increase the number of sockets. You should do a distributed load testing.
Luckly for you Jmeter has this ability :)
The google term you should look for is distributed JMeter testing or remote JMeter testing. If it happens that you only can use your local machine you might use virtual machines to create several JMeter distributed instances...
Check:
http://jmeter.apache.org/usermanual/remote-test.html

Resources