Overview
- This document contains the results of Central Ordering testing scenarios to create order with PO lines plus Change instance connection and Receive all pieces for Ramsons [ECS] environments.
- PERF-1027Getting issue details... STATUS
Summary
- All tests were successfully completed, and all API calls were executed without errors.
- Response time for Change Instance Connection for Test №2 increased by 45% compared to Test №1 and for Test №3 Response time increased by 125% compared to Test 1. It appears that the Find or Create New Holdings action performed multiple operations, which explains the extended response time for this action.
In Test 3, the Create Order operation involved creating orders with 50 Order Lines, compared to 1 Order Lines in Test 1 and 10 Order Lines in Test 2. This explains the significant increase in response times for the Open Order and Unopen Order operations:
- Open Order: Response times increased nearly 10x in Test 3 compared to Test 1 due to the higher load (50 items per order).
- Unopen Order: Similarly, response times grew approximately 4-5x in Test 3.
For other operations (Create Order, Create Order Line, Receive Pieces, and Change Instance Connection), response times increased moderately but remained within acceptable ranges as the load increased.
Conclusion: The increase in item count per order directly impacted the performance of Open Order and Unopen Order, highlighting their sensitivity to load.
- In Test №2, the Create New Holdings operation for Change Instance Connection triggered the reindex function. As a result, we observed that mod-search initiated reindexing, as evidenced by SQL queries N1 and N4 appearing in the TOP 5 SQL Statements table. This process placed a significant load on the database and continued for over 3 hours after the tests were completed.
Test Runs
Test № | Date | Test Conditions | Results |
1 | 12/12/24, 9:48 AM UTC | PO with PO Lines (1) + locations (5) + Change instance connection (Move holdings) | Completed |
2 | 12/12/24, 11:32 AM UTC | PO with PO Lines (10) + locations (3) + Change instance connection (Create new holdings) | Completed |
3 | 12/12/24, 1:21 PM UTC | PO with PO Lines (50) + locations (3) + Change instance connection (Move holdings, Find or Create new holdings) | Completed |
Test Results
Test №1
PO with PO Lines (1) + locations (5) + Change instance connection (Move holdings)
Requests | Total Requests Count | Response Time (milliseconds) | |||
Average | pct90 | pct95 | pct99 | ||
---|---|---|---|---|---|
POST /orders/composite-orders Create Order | 576 | 98 | 166 | 284 | 833 |
POST orders/order-lines Create Order Line | 576 | 137 | 250 | 486 | 1.094 |
PUT orders/composite-orders/[order_id] Open Order | 574 | 1.659 | 3.612 | 8.279 | 8.288 |
PATCH orders/order-lines/[curent_po_line_id] Change instance connection (Move Holdings) | 574 | 726 | 1.039 | 1.851 | 15.494 |
POST /orders/check-in Receive Pieces | 574 | 729 | 1.059 | 2.207 | 17.613 |
PUT orders/composite-orders/[order_id_created] Unopen Order | 574 | 625 | 757 | 1.014 | 1.607 |
Test №2
PO with PO Lines (10) + locations (3) + Change instance connection (Create new holdings)
Requests | Total Requests Count | Response Time (milliseconds) | |||
Average | pct90 | pct95 | pct99 | ||
---|---|---|---|---|---|
POST /orders/composite-orders Create Order | 126 | 180 | 319 | 892 | 910 |
POST orders/order-lines Create Order Line | 1260 | 189 | 314 | 503 | 957 |
PUT orders/composite-orders/[order_id] Open Order | 126 | 3.980 | 6.095 | 6.100 | 6.100 |
PATCH orders/order-lines/[curent_po_line_id] Change instance connection (Create New Holdings) | 252 | 1.053 | 1.502 | 2.697 | 2.697 |
POST /orders/check-in Receive Pieces | 1252 | 692 | 918 | 1.027 | 7.200 |
PUT orders/composite-orders/[order_id_created] Unopen Order | 124 | 1.227 | 1.836 | 2.194 | 2.835 |
Test №3
PO with PO Lines (50) + locations (3) + Change instance connection (Move holdings, Find or Create new holdings)
Requests | Total Requests Count | Response Time (milliseconds) | |||
Average | pct90 | pct95 | pct99 | ||
---|---|---|---|---|---|
POST /orders/composite-orders Create Order | 26 | 270 | 314 | 331 | 331 |
POST orders/order-lines Create Order Line | 1300 | 179 | 175 | 307 | 469 |
PUT orders/composite-orders/[order_id] Open Order | 26 | 19.305 | 25.633 | 25.755 | 25.761 |
PATCH orders/order-lines/[curent_po_line_id] | 220 | 1.632 | 3.250 | 3.542 | 4.186 |
POST /orders/check-in Receive Pieces | 1200 | 940 | 1.192 | 1.311 | 1.832 |
PUT orders/composite-orders/[order_id_created] Unopen Order | 24 | 4.471 | 5.866 | 5.910 | 5.910 |
Comparison
Test №1-№2-№3
The following table compares the results between tests №1, №2 and №3.
- Open Order: Response times increased nearly 10x in Test 3 compared to Test 1 due to the higher load (50 items per order).
- Unopen Order: Similarly, response times grew approximately 4-5x in Test 3.
Resource utilization for Test #1-2-3
Service CPU Utilization
Here we can see that mod-search initiated reindexing for Test #2.
Service Memory Utilization
Here we can see that all modules show a stable trend.
Kafka metrics
OpenSearch Data Nodes metrics
DB CPU Utilization
DB CPU in the average were 20% for Scenario 1, 30% for Scenario 2 and 40% for Scenario 3
.
DB Connections
Max DB connections was 1560.
DB load
Top SQL-queries
# | TOP 5 SQL statements |
---|---|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
Appendix
Infrastructure
PTF - environment Ramsons (rcon)
11 m6g.2xlarge EC2 instances located in US East (N. Virginia)us-east-1 [Number of ECS instances, instance type, location region]
1 instance of db.r6.xlarge database instance: Writer instance
OpenSearch
domain: ptf-test
Number of nodes: 7
Version: OpenSearch_2_13_R20240520-P5
MSK - fse-tenant
4 kafka.m7g.xlarge brokers in 2 zones
Apache Kafka version 3.7.x
EBS storage volume per broker 300 GiB
auto.create.topics.enable=true
log.retention.minutes=480
default.replication.factor=3
Methodology/Approach
All tests scenarios were started from Load Generator i-066a4ed5e6ec777bc on Ramsons ECS (rcon) environment.
Parameters for Tests:
- Number of users: 2
- Test duration: 1.5h
- No pause between user action
Test scenario №1
Create order
Create 1 PO lines (instance free text)
- Create 5 locations (from different tenants)
Open order
Change instance connection to some other instance (Move holdings)
Receive all pieces for all locations per PO line
Unopen the order with option Delete Holdings and items
Test scenario №2
Create order
Create 10 PO lines (shared instance from Central tenant)
- Create 3 locations (from different tenants)
Open order
Change instance connection to some other instance (Create new holdings) for 2 PO lines
Receive all pieces for all locations per PO line
Unopen the order with option Delete Holdings and items
Test scenario №3
Create order
Create 50 PO lines (shared instance from Central tenant)
- Create 3 locations (from different tenants)
Open order
Change instance connection to some other instance for 9 PO lines:
- Move holdings for 3 PO lines
- Create new holdings for 3 PO lines
Find or Create new holdings for 3 PO lines
Receive all pieces for all locations per PO line
Unopen the order with option Delete Holdings and items
Attached files
Ramsons ECS (rcon) module configuration parameters:
JMeter script: