Reputation: 1
I have created a profile of maximum peak load of 5000 rps using Throughput shaping meter provided as a jmeter plugin.
When I add "transaction per second" as a listener to analyze the request per second. It does not show a peak load of 5000rps.
Does the transaction per second listener shows the plot of generation of the request by Throughput shaping meter or the actual execution plot of those generated requests against any target server.
How can I confirm the generation of the requests reaches he maximum peak load of 5000 rps? Currently I am using http sampler for request generation.
Upvotes: 0
Views: 294
Reputation: 168002
Throughput shaping timer can only pause the threads to limit JMeter throughput to the defined value(s), it won't be kicking off any extra threads so make sure you provide enough threads (virtual users) and loops (so all the threads would be up and running) in order to reach the desired throughput.
Also be aware that JMeter waits for previous response prior to starting next request so depending on you application response time you may (or may not) reach the desired value of 5k requests per second.
Example sample figures:
It is also highly unlikely that you will be able to reach 5000 RPS throughput using JMeter default configuration which is good for tests development and/or debugging but it not suitable for the high loads, so make sure you're following JMeter Best Practices and recommendations from the 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure guide.
Upvotes: 0
Reputation: 2978
First thing first, Yes, Transaction Per Second listener shows the proper results of your generated transactions per second.
If I'm not mistaken, 5000 rps is a quite heavy load and to generate such load you have to consider some major points. I'm trying to mention those in short:
To generate 5000 requests per second, you have to provide enough number of threads to make those requests. Please do not make any confusions between threads and requests.
Higher Throughput (rps) also depends on the response time of your requests. So, if the response time is too high, I'm afraid you can't hammer your server in such rps.
Remember the machine dependency!! To get your anticipated rps, you have to run your test in Distributed architecture. Check out the JMeter best practices guidelines.
If you already did those things, then please try to use some sniffer tools like Wireshark from your application server for checking how many requests are there during your peak load time. It will match likely your transactions per second listeners results.
Now, even if you can't get those, let's tweak some server configuration like TCP connections. tcp_tw_recycle
or tcp_tw_reuse
, these two are usually disabled. Try to temporarily enable these configs and re-run your test to check the rps value again. You have to remember this thing that, how many ports are open during that peak load time, how many connections are open and how many are established during that time? Did you consider those things?
There are plenty of work you can do for this things!!! I just have to say, performance testing isn't done by only load testing tools, it's also the smartness and capability of performance tester.
So, I can give my two cent for today, you can re consider these things and try to redesign your test plan.
You can also check this thread: How to send 4000+ requests in exactly 1 second?
Thank you.
Upvotes: 0