bagisto_performance
bagisto_performance
Benchmarking Report
v2.0.0
Bagisto is an eCommerce ecosystem designed for all to build and scale your business. It's a
free and open-source eCommerce framework that offers you a wide range of functionality
and lets you have total control of your store. Built on top of Laravel stack, it is coupled with
easy product information management and fast time to market the product. Besides, the
frame work is very flexible and easy to use even for non-tech sawies.
The purpose of this white paper is to validate the performance Bagisto eCommerce
Store considered for benchmarking consists of two tier server architecture having
application and database on separate nodes. Beside code structure optimisation, no other
external cache or server side accelerator has been implemented on the server. Server
specifications and nature of products present in the store have been mentioned in the next
activities like home page browsing, sign up, sign in, add to cart and accessing
Name Value
Swap Memory 4 GB
Apache2/Mysql 300
Connections Limit
Products
Categories 101
Customers 500
Number of Admins 01
Categories 101
was originally designed for testing Web Applications but has since expanded to other
test functions.
Benchmarking Scenarios _
Following five scenario have been considered while benchmarking bagisto
ecommerce store :
User Sign up
User Login
Add to Cart
Home Page
Simultaneously, check the home page, signup page, sign in page, add to cart product,
and product & category page.
Customers will add items to their cart, provide their addresses, and select the payment
method.
User Sign up _
In this scenario, multiple users are trying to register themselves on customer sign up page
at the same time. Concurrent user in this case ranges from 50 to 500.
1 50 0 0 0 0 50
2 100 0 0 0 0 100
3 250 0 0 0 0 250
4 450 0 0 0 0 450
5 500 0 0 0 0 500
Request Summary _
Fail - 0.00%
Request Summary of
Sign-up Users
Fail
Pass
Pass - 100%
Response Time Graph _
7000
6000
5000
Percentile value in ms
4000
3000
2000
1000
0
0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0
Percentiles
X-axis: It shows the elapsed time. The elapsed time maybe relative time or actual time
as per the graph's setting.
User Login _
In this scenario, multiple registered users are attempting to login on customer sign-in page
at the same time. Concurrent users in this case ranges from 50 to 500.
1 50 0 0 0 0 0.00
2 100 0 0 0 0 0.00
3 250 0 0 0 0 0.00
4 450 0 0 0 0 0.00
5 500 0 0 0 0 0.00
Request Summary _
Fail - 0.00%
Request Summary of
Sign-up Users
Fail
Pass
Pass - 100%
Response Time Graph _
90000
80000
70000
Percentile value in ms
60000
50000
40000
30000
20000
10000
0
0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0
Percentiles
X-axis: It shows the elapsed time. The elapsed time maybe relative time or actual time
as per the graph's setting.
Add Product To Cart _
In this scenario, multiple registered users are attempting to login on customer sign-in page
at the same time. Concurrent users in this case ranges from 50 to 500.
Add to Cart
Ramp-Up
Hold on
Constant
Case Users Ramp-Up Error% Success
Step Target Timer(MS)
(User)
1 50 0 0 0 0 0 0.00
2 100 0 0 0 0 0 0.00
3 300 0 0 0 0 0 0.00
4 400 0 0 0 0 0 0.00
5 500 0 0 0 0 0 0.00
Request Summary _
Fail - 0.00%
Request Summary of
Sign-up Users
Fail
Pass
Pass - 100%
Response Time Graph _
140000
120000
100000
Percentile value in ms
80000
60000
40000
20000
0
0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0
Percentiles
/api/categories/tree-88 /api/checkout/cart-90
X-axis: It shows the elapsed time. The elapsed time maybe relative time or actual time
as per the graph's setting.
Home Page Browsing _
In these scenarios, we are benchmarking the home page with multiple concurrent users
ranging from 50 to 500.
1 50 0 0 0 0.00
2 100 0 0 0 0.00
3 300 0 0 0 0.00
4 400 0 0 0 0.00
5 500 0 0 0 0.00
Request Summary _
Fail - 0.00%
Request Summary of
Sign-up Users
Fail
Pass
Pass - 100%
Response Time Graph _
50000
45000
40000
Percentile value in ms
35000
30000
25000
20000
10000
5000
0
0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0
Percentiles
HomePage
X-axis: It shows the elapsed time. The elapsed time maybe relative time or actual time
as per the graph's setting.
Product and Category Pages _
Now, we are benchmarking different categories and products with multiple concurrent
users at the same time. Concurrent users accessing the category and product pages range
from 50 to 500.
Ramp-Up
Hold on
1 50 0 0 0 0.00
2 100 0 0 0 0.00
3 300 0 0 0 0.00
4 450 0 0 0 0.00
5 500 0 0 0 0.00
Request Summary _
Fail - 0.00%
Request Summary of
Sign-up Users
Fail
Pass
Pass - 100%
Response Time Graph _
30000
25000
Percentile value in ms
20000
15000
10000
5000
0
0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0
Percentiles
HTTP Request
X-axis: It shows the elapsed time. The elapsed time maybe relative time or actual time
as per the graph's setting.
Simultaneously, check the home page,
signup page, sign in page, add to cart
product, and product & category page _
In this testing scenario, multiple users are available on an e-commerce site, and the traffic is
distributed among all the web pages - a few of them are on the cart page, a few of them are
on the product page, signup, payment page, etc.
While benchmarking different web pages like - signup page, categories and product page,
add to cart page with multiple concurrent users ranging from 50 to 500, we have found the
following results -
Ramp-Up
Hold on
Constant
Case Users Ramp-Up Error%
Step Target Timer(MS)
1 50 0 0 0 0 0.00
2 100 0 0 0 0 0.00
3 250 0 0 0 0 0.00
4 450 0 0 0 0 0.00
5 500 0 0 0 0 0.00
Request Summary _
Fail - 0.00%
Request Summary of
Sign-up Users
Fail
Pass
Pass - 100%
Response Time Graph _
140000
120000
100000
Percentile value in ms
80000
60000
40000
20000
0
0.0 10.0 20.0 30.0 40.0 5 0.0 60.0 70.0 80.0 9 0.0 100.0
Percentiles
Fig 6: Response Over Time Graph of home page, signup page, sign in page, add to cart product, and
product & category page
X-axis: It shows the elapsed time. The elapsed time maybe relative time or actual time
as per the graph's setting.
Add items to their cart, provide their
addresses, and select the payment
method _
In this iteration, multiple users are logging in and adding a product on cart at the same
time provide their addresses, and select the payment method.Concurrent users in this
iteration range from 50 to 500.
Ramp-Up
Hold on
Constant
Case Users Ramp-Up Error%
Step Target Timer(MS)
1 50 0 0 0 0 0.00
2 100 0 0 0 0 0.00
3 300 0 0 0 0 0.00
4 400 0 0 0 0 0.00
5 500 0 0 0 0 0.00
Request Summary _
Fail - 0.00%
Request Summary of
Sign-up Users
Fail
Pass
Pass - 100%
Response Time Graph _
120000
100000
Percentile value in ms
80000
60000
40000
20000
0
0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0
Percentiles
Fig 7: Response Over Time Graph of Add items to their cart, provide their addresses, and select the
payment method.
X-axis: It shows the elapsed time. The elapsed time maybe relative time or actual time
as per the graph's setting.
Resource Utilization Graph _
Percent
100
80
60
40
20
0
09/07 09/08 09/09 09/10 09/11 09/12 09/13 09/14 09/15 09/16 09/17 09/18 09/19 09/20
database-1
Count
140
120
100
80
60
40
20
0
09/07 09/08 09/09 09/10 09/11 09/12 09/13 09/14 09/15 09/16 09/17 09/18 09/19 09/20
Note: I have tested all scenarios on JMeter with ramp-up periods of 25 seconds and 50
seconds, and the results remained consistent across all scenarios
Conclusion _
Observing the response time graphs and resource utilization reports for all the iterations
run during benchmarking, it can be validated that the Bagisto v2.0.0 store can handle 500
concurrent user connections successfully, provided that the server has been configured and
tuned properly.
By analyzing the resource consumption graph, we can conclude that the server
configuration (RAM, CPU cores, disk space, etc) has been properly tuned.
I have conducted tests using Apache JMeter with consistent thread groups and ramp-up
durations (in seconds) across all operations (such as homepage, sign-up, sign-in, add to cart,
The server has been configured with a total of 198k products on Bagistov2.0.0,
A Bagisto v2.0.0 store can deal with the load of 500 concurrent users with aforementioned
server configuration without any external cache or server side optimisation. With fine server
optimization techniques and use of external cache could further enhance the performance.