How to generate logs in jmeter when launching test from non-GUI - jmeter

I am doing load test using 5 slaves machines. Upon reaching 50,000 users I am having connection reset errors and handshake errors. I have followed the steps mentioned in Jmeter report giving errors with distributed mode but errors don`t appear in result tree
and https://www.xtivia.com/fixing-jmeter-socket-errors/
When I use javax.net.debug=ssl, there is a long list appearing and it difficult to go through such a long list to find any error.
Can someone help with the different kinds of logs that can be generated and how to generate them as I am testing from non GUI mode. I have read many posts and so far I have not been successful to find the cause of these errors.
Is it related with sockets recycle? Is it from JMeter or the Client machines?
The errors are :
Non HTTP response code: javax.net.ssl.SSLException/Non HTTP response message: Couldn't kickstart handshaking
Non HTTP response code: javax.net.ssl.SSLException/Non HTTP response message: Connection reset
Non HTTP response code: javax.net.ssl.SSLException/Non HTTP response message: readHandshakeRecord

jmeter -n -t sso.jmx > stdout.txt 2>&1

Related

Getting Non HTTP response message: Connection reset message On Taurus Container

I am getting Non HTTP response message: Connection reset error
I have 2 calls.
POST HTTP request
GET HTTP request: I am extracting the location from the response headers of the first POST call request.
NO cookies or request headers to send for 2nd request.
When I run it from JMeter and Taurus YAML locally, everything works fine.
Running on JMeter on the Taurus container through, it runs fine.
Running YAML through the Taurus container, I am getting the above error: ** Non-HTTP response message: Connection reset**
Test Configuration:
execution:
concurrency: 1
ramp-up: 3s
hold-for: 30s
Not sure where the problem Is?
I tried other options like setting JMeter properties and others, for example:
hc.parameters.file: hc.parameters
http.connection.stalecheck$Boolean: true
https.sessioncontext.shared: true
https.default.protocol: TLSv1.2
https.socket.protocols: TLSv1 TLSv1.2
Checked the jmeter.log and bzt.log file for any errors. But none was found.
We cannot say anything meaningful without:
Knowing your test configuration (how many users, for how long, what is ramp-up, what it time to hold the load)
Seeing jmeter.log file (preferably with debug logging enabled for HTTP components)
Seeing bzt.log file and/or console output, again preferably with verbose switch
Seeing your container and container management engine health metrics (CPU, RAM, Network sockets, etc.)
In your case Taurus acts as a wrapper for JMeter test and it has its extra cost, it might be the case the container doesn't have sufficient resources to run both.

Jmeter report giving errors with distributed mode but errors don`t appear in result tree

I am running my test in distributed mode from the GUI. I have some 20,000 users and two vitual machines have more than 4 VPCUs and 80 Gg memory. I can`t see any stress on any of the machines, neither the slaves or masters, nor the server under test and I could hardly see any error in the GUI. However, in the report, I am having the following errors:
Non HTTP response code: javax.net.ssl.SSLException/Non HTTP response
message: Couldn't kickstart handshaking
Non HTTP response code: javax.net.ssl.SSLException/Non HTTP response
message: readHandshakeRecord
Non HTTP response code: javax.net.ssl.SSLException/Non HTTP response
message: Connection reset
The errors are only 0.05%
Can anyone help me what these errors mean and how can I correct them.
You are not seeing the error in GUI because i.e. View Results Tree listener shows only 500 last results, it is controllable by view.results.tree.max_results JMeter Property and if you add the next line to user.properties file:
view.results.tree.max_results=0
next time you run JMeter you will see each and every request in the View Results Tree listener.
Be informed that GUI mode should be used for tests development and debugging, execution should happen in command-line non-GUI mode
For Couldn't kickstart handshaking and readHandshakeRecord - you can get some troubleshooting information by enabling debug logging for SSL, it can be done by adding the next line to system.properties file:
javax.net.debug=ssl
For Connection reset - see JMeterSocketClosed wiki article
If you have access to your application logs - check them for any suspicious entries
More information:
Apache JMeter Properties Reference
Apache JMeter Properties Customization Guide

Non HTTP response code: java.net.UnknownHostException in JMeter

I am trying to do load testing using JMeter for the first time.
I am trying to access URL : http://ss12345.localhost:9001/testManagement/login.
The Sampler Result Printed as :
Thread Name:Thread Group 1-1
Sample Start:2020-04-02 18:25:52 IST
Load time:21
Connect Time:21
Latency:0
Size in bytes:2490
Sent bytes:0
Headers size in bytes:0
Body size in bytes:2490
Sample Count:1
Error Count:1
Data type ("text"|"bin"|""):text
Response code:Non HTTP response code: java.net.UnknownHostException
Response message:Non HTTP response message: ss12345.localhost
HTTPSampleResult fields:
ContentType:
DataEncoding: null
I do not understand why it is not picking the userSpecificSubDomain : ss12345.
If I do not specify userSpecificSubDomain then it opens the Login Page otherwise it throws the Non HTTP response code: java.net.UnknownHostException.
For more details, refer to the below images.
Image 1
Image 2
JMeter tries to resolve the IP address of the DNS hostname ss12345.localhost and since it is not known it fails to determine the address therefore it fails.
If you have JMeter and the application under test on your local machine you can:
Add the next line to the hosts file (normally lives under C:\Windows\System32\drivers\etc\hosts)
127.0.0.1 ss12345.localhost
Or alternatively (or if you don't have administrator permissions hence cannot edit the hosts file) you can add a DNS Cache Manager to your Test Plan and specify the mapping there:
Just in case be aware that having the application under test and the load generator running on the same machine is not the best idea as they will start struggling for resources so load test results will not be reliable as you won't be able to tell whether it is a performance bottleneck or it just a lack of i.e. RAM

How do I solve Jmeter Error Connection reset?

I am running a performance test on a site using Jmeter. Using a load of up to 100 simultaneous users(Threads) the tests pass perfectly, trying to raise this load to 300 users (Threads) I get the following error:
Non HTTP response code: java.net.SocketException / Non HTTP response message: Connection reset
The error occurs in only 0.68% of requests (out of 2412 requests made by 300 users(Threads) only 2 requests generated this error)
I thought it was the maximum number of connections allowed on my server, I went to my application's webconfig and entered the following information: "Min Pool Size = 5; Max Pool Size = 500;". but still not solve the problem.
Does anyone know what I can do to not generate these errors?
Most probably it indicates a problem with your application, try checking:
application logs
application/web server logs and configuration
underlying operating system logs and networking configuration. also pay attention to number of open ports/sockets/handles (can be checked using either built-in OS monitoring tools or JMeter PerfMon Plugin)
If you're absolutely sure that there is nothing wrong with your test script and application and JMeter is configured to behave exactly like a real browser you can follow instructions from JMeterSocketClosed wiki page
More information: The Mysteries of Connection Close

Kindly share if any attribute can be set in properties file or anywhere in jmeter to update the waiting time and maximum tries to get server response

Getting 'response code 504 - GATEWAY TIMEOUT' when run jmeter scripts in distributed mode (1 master, 2 slaves in aws - ec2 instances). Kindly share if any attribute/value can be set in properties file or anywhere in jmeter to update the waiting time and maximum tries to get server response.
Actually you are getting the response already so you don't need to change any properties as they will not have any effect. If you need to retry the request in case of receiving HTTP status code 504 follow the next steps:
Store response code into a JMeter Variable using Regular Expression Extractor like:
Once done you can put your HTTP Request under the While Controller and use the following condition: ${__javaScript("${code}" != "200",)}.
This way JMeter will retry executing the sampler until response code will not become 200.

Resources