1
votes

Unable to achieve expected throughput by running Jmeter scripts as expected throughput is more however getting very less.

Running Jmeter script by targeting 1000 requests per second (Business SLA) hence used 'Constant Throughput Timer' or 'Throughput shaping timer' as suggested in below queries.

  1. Constant Throughput Timer: Target - 60,000/min (60 secs) - all active threads, Threads (Users) - 200 with Ramp up - 1 sec, Duration: 1 hour. or Users - 2000 or tried with 10,000 users as well.

Result: Ended the execution with throughput showing 50/sec with average response time 50 seconds.

Jmeter: Scenario to test 5 users with ramp up 1 hour to trigger 10 thousand requests

unable to increase average throughput in jmeter

  1. Throughput shaping timer: Reflecting setup as above.

In both the cases getting 'Throughput' around 50/sec with average response around 30 secs.

When looked at server metrics - CPU and memory consumption is very less around 3% only.

Hence expected 'Throughput' is high as the server resources are not used much, if 'Throughput' is low and continuously sending requests with Forever to see if can get 500 response code errors, it just increases the average response time and reduces Throughput but not getting 500 response code errors.

After some time getting socket exceptions, connection reset issues where Jmeter is running but no failures seen at server side.

Gone through similar queries here however unable to understand when server resources not used much and as per Server platform SLAs, it supports 1000 RPS but unable to achieve through Jmeter.

As per CTT calculation: RPS * / 1000

1000 * 50000/1000 = 50000 (Should give threads upto 50K? however our SLA is only for 200 users).

1
Did you check your load generators engine health?ararar
Thanks for the reply. We are not using distribution mode, single system is used. This system has 32 GB, Jmeter JVM is set to min 20gb and max 22gb, CPU and memory always less than 50% in Jmeter instance.la1

1 Answers

1
votes
  1. It might be the case your server isn't capable of responding fast enough. Low CPU and Memory consumption means that the server has enough headroom, however the application server configuration can be incorrect so the server doesn't fully utilise it's hardware resources. Another reason could be inefficient algorithms used in your application code, you can use a profiler tool to see what's going on when you're conducting the load
  2. It might be the case JMeter is not capable of sending requests fast enough. Make sure that the machine where JMeter is running is not overloaded, that you run your JMeter test in non-GUI mode and in general follow JMeter Best Practices. You can also try running JMeter in distributed mode in case if one machine is not capable of creating the required load.