I am not able to judge the performance of a random_page, I have recorded a page and played it in JMeter.
I have set:
No of threads: 100
Ramp up period: 1 s
loop count: 1
I got the result:
Average: 876
Median: 694
90% Line: 1343
Throughput: 97.7 / s
I am new to JMeter, How to analyse the performance? What could be the target throughput for an average flow?
In order to get a better view of what's going on during your test I would recommend using:
JMeter Reporting Dashboard
Extra graphs provided via JMeter Plugins project
Also if you think you have 100 concurrent users given your setup - it might not be the case. Check out JMeter Test Results: Why the Actual Users Number is Lower than Expected article for detailed explanation on how does JMeter work and what Thread Group settings stand for.
Related
I am currently using Jmeter for API Performance Testing, but recently I started to look into Gatling as a potential replacement of Jmeter. Below is the PoC I'm doing for Gatling but I notice the performance result is very different.
Setup:
where we hit a https endpoint with a concurrent user of 10 for 60 seconds.
Results
Jmeter: 10 threads (no ramp up), 60 seconds
Result: 150 TPS
Gatling: 10 concurrent users, also 60 seconds
Result: 27 TPS(cnt/s?)
Question:
first I want to confirm the terminology of Gatling; in Gatling result chart, I see a column named "mean cnt/s" I hovered over it and it says "count of event per second", I imagine that's the same thing as Jmeter's TPS?
Jmeter:
summary + 2386 in 00:00:16 = 153.1/s Avg
Gatling:
Mean cnt/s: 26.652
if above assumption is correct, can someone share some insight on why Gatling's number is much lower than Jmeter's?
Thank You!
Gatling: 10 concurrent users, also 60 seconds
Do you understand what this does?
This is going to spawn a new user every time an existing one finishes, and hence create new connections. Assuming it takes 100ms for a virtual user to complete the scenario, you're going to spawn 101060 = 6,000 virtual users and as many connections.
Is that really what you want and is it the same thing as you do with JMeter?
If you actually want the same 10 users to loop for 60 seconds, you have to inject atOnceUsers(10) and add a during(60) loop in your scenario.
https://gatling.io/docs/gatling/reference/current/core/injection/#open-model
https://gatling.io/docs/gatling/reference/current/core/scenario/#loop-statements
Many things can cause deviations.
I assume you use the same setup for both in terms of load generator/target insance. You can start with fixed number of requests first.
Use loops in Jmeter and repeat in Gatling.
Sending for example 60 x 10 = 600 requests in total.
Gatling will be able to generate much higher load than Jmeter if properly used.
I need to run a Load test for 250 users for 1 hour. What are variable which I need to consider when I'm planning the load test?
The relevant Thread Group configuration would be something like:
You might also want to specify Ramp-Up period, with the above setup JMeter will kick off all users in 1 second and normally people want to increase the load gradually in order to be able to correlate the increasing load with changing metrics like response time, throughput, number of errors, etc.
More information:
JMeter - Elements of Test Plan - Thread Group
JMeter Ramp-Up - The Ultimate Guide
Good day.
I am new to J-Meter and here is the requirement I need to verify through J-meter TP.
I am using Jmeter: 5.1 version.
I need to get the results for 500 throughput per seconds.
Number of target users : 100
Time to run the test 1 hr.
Start the test with 5 users and increase the load by setting every 3 seconds 5 more users up to add till we reach reaching 100 users.
Once we reach 100 users >> Keep the load for 10 seconds hold and decrease the load by every 3 seconds to reduce 5 number of usrs.
Please help me on what are the parameters I have to set in J-Meter test plan.
Thanks.
Siva
The easiest way of controlling the number of requests per second (throughput) in JMeter test is using Constant Throughput Timer
Add Constant Throughput Timer to your Test plan and configure it to send 30000 requests per minute (500 requests per second)
Make sure that all the Samplers are in the Constant Throughput Timer's scope and you have all active threads selected in the dropdown
You can only achieve 500 requests per second with 100 users if your application response time is 200 ms or less, if it's more - you will have to increase the number of threads accordingly.
And last but not the least, according to JMeter Best Practices you should always be using the latest version of JMeter (5.3 as of now) so consider upgrading at next available opportunity
Below are some suggestions that might help you to start with:
You might need to calculate the pacing required to achieve target total transactions:
Pacing = 3600(Test duration time in seconds) * ( target no.of user) / (no.of total transactions to achieve).
To setup ramp up, ramp down more effectively you will need one of the plugin available in Jmeter Plugins Manager (Plugin name : Stepping Thread Group by blazemeter) which comes with a preview.
How to setup Plugins manager (https://jmeter-plugins.org/wiki/PluginsManager/)
I have a task to create profile load on the app. Profile load: Vuser 7 , 50 requests per hour. Create load dinamics: ramp-up 2 min , loading 20 min , end of loading 2 min. How to calculate this and choose thread group(and timer)?
Your test looks rather weird as 50 requests/hour is less than 1 request per minute and it is unclear why do you need 7 users and ramp-up/ramp-down periods.
No matter.
The easiest way of implementing your "load pattern" is using Ultimate Thread Group. It is not a part of normal JMeter distribution, you need to install it using JMeter Plugins Manager. The relevant configuration would be something like:
The easiest way of slowing down the requests to 50 request per hour is using Precise Throughput Timer, the appropriate configuration for your scenario would be:
You can check the actual throughput and the number of executed samplers using i.e. Aggregate Report listener. Given your test scenario lasts 24 minutes you should have around 20 sample results.
Please tell me for 1000 users ,how much ramp up time shall I give,so that in Jmeter report also 1000 users should come.I have tried every combination almost but failed.And I want to test it in a given loop count,not in forever mode.
For example i have ran test for 1000 users with 1000 sec ramp up time and loop count to be 1,but the in jmeter report,only 12 users are shown to be active/virtual users.So please tell me the correct combination.
And if I talk about graph listener,why it is start from end direction,that is from the opposite direction where it should end.
Thanks
This is a common misunderstanding described in Max Users is Lower than Expected article.
In official documentation it's recommended to start with
Ramp-up = number of threads and adjust up or down as needed.
If you need to limit test execution time you can use Runtime Controller. If your goal is to simulate 1000 requests per second - you should be using Constant Throughput Timer.
Ultimate Thread Group available via JMeter Plugins allows configuring ramp-up, ramp-down and time to hold the load period in easy visual way.
Choose any above option or combination according to you load test scenario or elaborate the question so we could suggest the best one.
If you have specified 1000 users, but only 12 are shown to run in the test report, its possible that your test duration is set too low.
Try changing the thread group settings to those in the screenshot, does that help?