jmeterhorizontal-scaling

Jmeter Transactions Per Second do not represent actual requests processed in second


I am in confusion here for what is the right parameter to find how many requests my service can handle in a sec.. Eg: According to docs & this post TPS(transactions/sec) is calculated based on elapsed time of the request which seems to be fair when you have one service instance. Eg: My elapsed time is 1 second so my tps is 1 which makes sense, but the calculations fail when i have 3 service instance(H-Scaled) though the elapsed time remains the same but now i can process 3 concurrent requests in that same second which should ideally read back as 3 tps but it doesnt

Q:Then what is the right parameter in jmeter report to check for this ? or is my theory wrong?


Solution

  • As per JMeter Glossary:

    Throughput is calculated as requests/unit of time. The time is calculated from the start of the first sample to the end of the last sample. This includes any intervals between samples, as it is supposed to represent the load on the server. The formula is: Throughput = (number of requests) / (total time).

    And request is something produced by JMeter's Sampler

    If you're doing some scalability testing you can measure it as follows:

    1. Run a stress test with 1 service instance, i.e. start with 1 user and gradually increase the load at the same time looking at TPS. At some point you will reach the stage where increasing the number of users won't result in increased TPS due to some bottleneck. Measure the number of users and the TPS just before the bottleneck hits you.
    2. Re-run your test with 3 service instances, you should see that the number of users and TPS before the bottleneck is higher now.