I installed JMeter 5.3, created one thread group with 10/10/10 (users/rampup time/loop count), so I expect to get 100 requests executed total and see graph with one line which will show how long requests take, BUT I see that 300 requests were executed and my report dashboard looks like this:
SomeRequest 100 0 0.00% 1570.50 1118 1900 1684.50 1892.90 1900.00 1900.00 4.85 29.62 1.91
SomeRequest-0 100 0 0.00% 344.50 305 405 337.50 403.20 405.00 405.00 13.14 6.71 2.59
SomeRequest-1 100 0 0.00% 1225.30 812 1494 1345.50 1492.40 1494.00 1494.00 6.04 33.78 1.19
And graph shows 3 lines instead of one.
So my question: why do I see 3 lines instead of one? Why test was executed 3 times? Maybe I'm missing some global config property which is set to "3"?
There could be 2 possible reasons:
Your server redirects you somewhere so you see these extra requests as redirect targets (like from HTTP to HTTPS, from landing page to language-specific page, etc)
like here:
You have Retrieve all embedded resources option enabled on "Advanced" tab of the HTTP Request sampler so JMeter parses the response and downloads extra data like images, scripts, styles, fonts, etc.
Most probably the behaviour is valid, if you want to check the URL for the sub-requests you can run your test in GUI mode with Functional test mode option enabled on Test Plan level - this way you will be able to see the URLs for the secondary requests:
Related
When number of threads (users): is set below 10, the number of samples is displayed correctly. When number of threads (users): is set to 10, the number of samples is 18 ~ 20.The expected result should be 22. Please point out the problem for me.
JMeter version: 5.4.3
The script settings are as follows:
-- Thread Group
-- Thread Properties
Number of Threads (users):11
Ramp-up period (seconds):2
Loop Count:Infinite 2
-- Critical Section Controller
--HTTP Request 1
--HTTP Request 2
--HTTP Request 3
--HTTP Request 4
--HTTP Request 5
-- Aggregate Report # Samples
--HTTP Request 20
--HTTP Request 20
--HTTP Request 19
--HTTP Request 18
--HTTP Request 18
I cannot reproduce your issue:
and I can think of the following reasons:
You have artificial limitation of the test execution time in Thread Group:
You have responses filtering configured in the Aggregate Report listener, i.e. if this box is ticked - you will see only requests which were successful and failed ones won't be displayed:
Try re-running your JMeter test in command-line non-GUI mode and see how many results are in the .jtl results file
Check jmeter.log file for any suspicious entries
And last but not the least, do you realize the concept of the Critical Section Controller? In your setup it means "no concurrency", all HTTP Request samplers will be executed by one thread at a time only so the equivalent setup would be
We recently updated apache jmeter from v4.0 to the latest v5.4.3.
The tests are running fine, but we have strange results.
The requests appear with 3 different labels (without suffix or -0 / -1 appended).
timeStamp, label, responseCode, threadName
1643834640785, API call, 200, Load Group 1 1-1
1643834640785, API call-0, 302, Load Group 1 1-1
1643834641189, API call-1, 200, Load Group 1 1-1
1643834640785, API call, 200, Load Group 1 1-2
....
It seems to me this happens, when the same thread calls the API multiple times.
I am not a jmeter and I am not sure why this happens and how to fix it. Also I don't know what information is needed to analyze the problem correctly.
Thanks in advance!
I'm seeing HTTP Status 302 which means redirection (for example from HTTP to HTTPS or from global website to country-specific website), in that case JMeter generates additional Sub-Result.
The "strange" labels is how JMeter calculates throughput for embedded resources and the cumulative execution time of the parent sampler in case of redirects as well.
The question is what do you want to do with this.
The options are in:
Take it for granted given the above explanation
If you want the "strange" labels to be resolved into real URLs - tick "Functional Testing" box in the Test Plan
or add the next line to user.properties file:
subresults.disable_renaming=true
If you want to get rid of these subresults completely - add the next line to user.properties file:
jmeter.save.saveservice.subresults=false
More information:
Configuring JMeter
JMeter Properties Reference
I am using Apache JMeter 2.13 on Windows 7 and Java 1.8.0_73
I have a JMeter file set up with a thread group with 1 thread, 0 ramp-up period and 5 loop count. I've recorded the log in process for a web application using the recording controller, the HTTP(S) test script recorder and Firefox. I have added the other elements you can see in the screenshot below
I've then parameterized several of the requests to extract login tokens and moved the root URLs out into user variables (so that I can run it against my local build or any of the server builds) including a beanshell script for dynamic authentication headers in some of the requests.
When I clear results and then run the test script I see that the first request in the first iteration has a sample time of around 10 seconds, the same is true of the 4th request (the next major page).
The second iteration these same request takes ~600ms, the third iteration 350
e.g.
10318, 605, 350, 641, 310
I then clear results, run again with 10 loops
10366, 1012, 600, 300, 293, 632, 324,292, 331, 291
So my questions are: Is this expected JMeter behaviour?
Is there anyway to change it
Usually you have to have some warmup method to be run first. Just to set up all the stuff, to reach the db, start some threads, etc.
The results of the warmup are not taken into account when analysing the performance.
I have the next test plan in JMeter:
on the screenshot you can see the settings for the 1st ThreadGroup, wich has 50% of common amout of request in test plan (in each Thread Group are 10 different subrequests placed).
So, +1 request per second is added in average using these settings.
Then I ran this test and saw this picture (Error % column):
I save errors in file and all these errors have the same text:
<sample t="30129" lt="0" ts="1356710138314" s="false" lb="WebService(SOAP) Request 1" rc="000" rm="**Connection reset**" tn="jp#gc - Stepping Thread Group1 3-247" dt="text" by="0"/>
Server's cpu screenshot:
and for database:
After the errors have appeared my comp started work slowly and slowly (although the errors stopped to appear further)...
And in the same time the server's cpu progressively dropped to 0.
Could you tell me, please,
What is the reason of this error?
Have I reached the server timeout? (Because Max is more than 30s in the table).
UPD. I have rerun test with next settings: 1000 users per 02:46:40 (+1 Thread Group per 10 second and 10 requests inside each new Thread in the Loop).
I.e. I have reduced the time of test and total Thread Groups by 2 times, but save intensivity of Thead's adding.
The results are the same (including cpu usage on the server).
I've received the error «Connection reset» after 990 thread started. There are screenshots:
Any idea?
First, WebService(SOAP) Request is not the best way to test Webservices in JMeter, it will be deprecated in upcoming 2.9 version.
HTTP Sampler is the one to choose as it performs much better.
Second, Connection Reset means your server has cut connection. It could be coming from the CPU which seems high but it's not sure.
If what you call "my comp" is the computer hosting JMeter started working slowly then your JMeter instance is overwhelmed by the number of threads (2003 or more?) you've configured. It can come from a lot of factors, read this:
http://www.dzone.com/links/see_how_to_make_jmeter_run_thousands_of_threads_w.html
I have the next test plan in JMeter:
on the screenshot you can see the settings for the 1st ThreadGroup, wich has 50% of common amout of request in test plan (in each Thread Group are 10 different subrequests placed).
So, +1 request per second is added in average using these settings.
Then I ran this test and saw this picture (Error % column):
I save errors in file and all these errors have the same text:
<sample t="30129" lt="0" ts="1356710138314" s="false" lb="WebService(SOAP) Request 1" rc="000" rm="**Connection reset**" tn="jp#gc - Stepping Thread Group1 3-247" dt="text" by="0"/>
Server's cpu screenshot:
and for database:
After the errors have appeared my comp started work slowly and slowly (although the errors stopped to appear further)...
And in the same time the server's cpu progressively dropped to 0.
Could you tell me, please,
What is the reason of this error?
Have I reached the server timeout? (Because Max is more than 30s in the table).
UPD. I have rerun test with next settings: 1000 users per 02:46:40 (+1 Thread Group per 10 second and 10 requests inside each new Thread in the Loop).
I.e. I have reduced the time of test and total Thread Groups by 2 times, but save intensivity of Thead's adding.
The results are the same (including cpu usage on the server).
I've received the error «Connection reset» after 990 thread started. There are screenshots:
Any idea?
First, WebService(SOAP) Request is not the best way to test Webservices in JMeter, it will be deprecated in upcoming 2.9 version.
HTTP Sampler is the one to choose as it performs much better.
Second, Connection Reset means your server has cut connection. It could be coming from the CPU which seems high but it's not sure.
If what you call "my comp" is the computer hosting JMeter started working slowly then your JMeter instance is overwhelmed by the number of threads (2003 or more?) you've configured. It can come from a lot of factors, read this:
http://www.dzone.com/links/see_how_to_make_jmeter_run_thousands_of_threads_w.html