Throughput value in Aggregate Report - jmeter

I have few questions on the results captured in Aggregate report.
What does the values in the 'Total' row shows?
How it is projected?
Particularly as we concentrate more on the aggregate_report_rate (QPS) field,
Is the value of the aggregate_report_rate in the 'Total' row, calculate the exact QPS?
Is that value is what all we need to say as the exact QPS?
Can someone please clarify on the same?

Aggregate report shows the Transactions per second(TPS) in the column aggregate_report_rate. For individual HTTP request names it shows TPS for that HTTP request itself. The total row shows the overall TPS for all the HTTP requests included in the test plan.
So, all the row show the average TPS for whole duration of the test, the total row shows the overall TPS of the test plan.

Related

How to identify Throughput from Summary report

I have created a simple script in Jmeter. I have used transaction controller to find out how much time is required to perform particular transactions. As you can see from the image, my api requests are divided in to 3 transactions namely: "Home Page", "Change freq to daily" and "Select brand".
Transaction controller "Home page" has 12 requests in it. Total number of enabled requests are 12.
Transaction controller "Change freq to daily" has 11 requests in it.
Transaction controller "Select brand" has 14 requests in it.
Setting for all the 3 transaction controllers is same which is as below. I have used only 1 thread group. Number of threads are 1 and loop count is also 1
Based on the execution summary report, I have below questions and will be very grateful if anyone can answer them correctly.
As you can see from the image, "Home Page" transaction controller shows number of samples as 1. Should it not show the total number of samples executed which are 12?
Throughput for "Home Page" transaction controller is 22.8/min. So, does this mean that in "Home Page" transaction, 22.8 requests were served per minute? How 22.8 is calculated? Is this the sum of Throughputs of all 12 requests under "Home Page" transaction controller?
In the row named as "Total" and in the "Throughput" column, it shows the Total as 3.7/sec. How the number 3.7 is calculated? What does it signify? Does this mean that for the entire performance test the Throughput is 3.7/sec? How do I find the Throughput for the entire performance test?
I guess "Average" for Home Page transaction controller is showing correct which is the sum of all 12 averages of the 12 api requests fired. Am I correct?
In the row named as "Total" and in the "Average" column, it shows the Total as 538. How where the number 538 calculated? What does this signify?
In the row named as "Total" and in the "Samples" column, it shows 40 samples. This also includes the Transaction Controller samples (which are 3 in total). Is this not misleading as only 37 samples expected (Adding samples in all 3 transaction controllers = 37). Why does it add the 3 samples for the transaction controllers as well? Can we not see the count as 37 which are the actual samples executed (api requests sent to server)?
It should not, it acts as an extra "pseudo" Sampler which holds the cumulative response time of its children, see Using JMeter's Transaction Controller for more details
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).
See point 2
It's arithmetic mean of 12 child elapsed times (sum of all response times divided by 12)
See point 4 but instead of 12 sampler results all sample results are considered
See point 1, this is how Transaction Controller works, depending on the mode it can:
Either add an extra sample result containing cumulative response times of its children
Or substitute its children with a single sample result with the cumulative time
so you can choose of having 40 samples (37 + 3 transaction controllers) or 3 samples (transaction controllers only)

Jmeter - How to perform data compare on two JDBC requests for the entire DB

I want to compare data between two databases, where there are 700K records to be compared, and that number is increasing all the time.
My architecture is:
Where based on the MAIN query i run:
JDBC1 & JDBC2 and, then i compare the data between JDBC1 & JDBC2.
If i put static limit in the main query,
select * from transaction_info
order by id asc
limit 1000
everything works fine, and i know how to compare the data.
But, how can i make all this dynamic, so i can break-down the main query like:
1. Query first 1000 rows, then compare/assert.
2. Query next 1000 rows then compare/assert.
And all this to continue till the 700K records?
Any help is appreciated!
As part of your main query SQL, you can include a combination of LIMIT and OFFSET to get incremental fetch of rows and variabilize the OFFSET part like below in order to bring in the dynamism
select * from my_table limit 1000 offset ${offset_value}
For the offset variable, define a Counter config element whose starting value is 1000, increments by 1000 until a max value of 700K. In case you want each user to do this process, then check on "Track counter independently for each user"
This way, everytime you will fetch 1000 rows then the subsequent 1000 in sequence
My suggestion for Test Plan
You can remove the loop controller and place the sub-queries along with assertion as siblings to the Main query and define the Thread Group's loop count to 700. This way the main query along with the sub-queries and assertion are triggered 700 times with each time fetching, processing and asserting 1000 rows at a time.
Sample Test Plan
Thread Group Loop Count Configuration
Hope this helps!

Alert when percent of total count exceeds threshold

The background
We need to know when a higher than usual percentage of requests receive responses with status code 500. Not the raw count, the percent of total.
Web request logs are shipped to Elasticsearch and visualized with Grafana.
Using the SingleStat Math plugin, we created a dashboard that displays the percent of all requests whose status code is 500.
Query A - count all where status code is 500
Query B - count all
Query Math: A/B * 100
We even set the threshold in the widget to turn red when it hits 1%.
That was easy. This, of course, requires someone to watch the dashboard. What we need is an alert.
The problem
How do I create an alert that fires under the same circumstance - i.e. for a given period of time when the number of 500s exceeds 1% of the total number of requests.
I understand Alerts only apply to the graph widget. So the answer to my question is to create a graph showing the percent of total.
I can add the two queries to the graph as with the SingleStat Math widget, but I don't see how to set the alert reducer to use both, let alone to divide one by the other.
It seems this should be simple: send me an email when that widget turns red. But how do I do this?
What I've tried
Using MetaQueries (type: Arithmetic, expression: A/B) but no data appears.
Dashboard as datasource hopefully to pull the value from the SingleStat Math widget. This appears only to pull the queries, not the calculation.
#biscuit314 You can calculate the percentage in the graph panel using the Metaqueries plugin. I have verified this, it works. You just need to get the format of the percentage calculation syntax right and the query with Metaquery datasource needs to be below the queries being used for calculation. That shall make it work.

I have to refer the 90% column "Total" row value for response time in Aggregate Report?

For response time I have to refer in Aggregate Report, the 90% column "Total" row value correct?
Note: The value highlighted in below image.
Use Case:Navigating to a page.
1. Number of thread - 1
2. Number of loop - 3
You should refer to each Request because I believe you have "Test" which is a "Transaction Controller" that has checked " Generate Parent Sampler" that adds the whole Test Transaction - Response Times for Requests and influences the Average, and maybe Consider uncheck "Generate Parent Sampler" for a better overview of the Avg Response Time.

Calculated field value won't pass through as a parameter in report

I have a report that I already created in which this works. I have three parameters in my first report with a matrix. The matrix column and rows are based off of two calculated fields. The row field is called Time Summary and is basically a time range like follows (8AM-10AM,10AM - 12PM, 12PM-2PM,Etc.) The column field is just days of the week (Monday,Tuesday,Wednesday,Etc.) They were both calculated by a field called 'CreatedDateTime'. The value column is a count of request numbers so we can see when our call center is receiving the most service requests and at which times.
I'm drilling down to a detail report that lists each request and many of the request details. I created an action on the value (count of request) textbox in my matrix report that makes it drill into the detail report. In the detail report I have the same three parameters as in my first report, but I also have parameters for the row and column fields of my matrix (Time summary and day of the week respectively). Here is a screenshot of my text box properties screen in the action tab.
The problem I'm having is that when I run my matrix report and click on the value that I want to drill into, it will drill into the detail report and update the parameter values for the three that are also in my matrix report, but it won't update the parameters for the values in which I selected in my matrix.
Here is another screenshot of what happens when I select a value in my matrix and it drills into the detail report. I have the calculated fields in my detail report too and it filters the main data set based off of the Day parameter and Time Summary parameter. I made a report yesterday very similarly and it worked. I can't figure out why it I can't get this report to work. I'm almost positive it has to do with how I have my parameters defined in my detail report or something with the text box properties and the action. Any help in figuring this out would be appreciated.

Resources