Optimizing MOBIUS Environment for Stable Performance: A Comprehensive Analysis
Overview
- This document contains the results of testing MOBIUS master-script tests. Ticket: - PERF-809Getting issue details... STATUS
Summary
- All tests were run successfully and without errors on the Mobius-performance testing cluster (mcpt). Approximately over 100 tests with various environment configurations were conducted. The tests and configurations that showed the best results for two database modifications, such as db.r6g.4xlarge and db.r6g.8xlarge, will be demonstrated.
- During testing, an insufficient amount of resources for Amazon OpenSearch Service was detected, so data node instance type was increased to r6g.2xlarge.search.
To improve performance, the AWS task count was adjusted for certain services, which increased the memory load on the database. To avoid OOM (Out of Memory) errors, configurations were changed in both the DB instance parameter group and the DB cluster parameter group. Specifically, the shared_buffers parameter was modified to SUM({DBInstanceClassMemory/24076},-50003).
- To avoid "remaining connection slots are reserved for non-replication superuser and rds_superuser connections" errors, configurations were changed in both the DB instance parameter group and the DB cluster parameter group. max_connections was modified to LEAST({DBInstanceClassMemory/9531392},9000)
- For mod-authtoken CPU was changed from 512 to 1024 and task count was adjusted to 6 tasks (2 default), okapi and nginx-okapi CPU was changed from 1024 to1536.
No sign of memory leaks on every module during master-script tests. Memory shows a stable trend. For tests with a high load of single record create and update (62 virtual users without pauses) OOM issue of mod-inventory was reported - MODINV-1023Getting issue details... STATUS
- No modules are showing a growing CPU trend or any spikes.
Average response time differs and depends on environment configurations.
- The "Receiving: downloading" workflow. Due to its design, it's processed by the frontend and sends frequent requests to the database in a very large quantity. When under a load of 70% of tenants simultaneously, this causes significant degradation in the performance of all other workflows. Therefore, results are provided in tables with additional tests conducted with this workflow and without it. The CPU usage by the database increases by more than 25% with this workflow and reaches 99%.
- Database connection count did not exceed 5700
- During the high-load test, exporting 800,000 records concurrently for 62 tenants, an issue with the mod-data-export occurs - PERF-927Getting issue details... STATUS , which will be resolved and tested in the next release - Quesnelia - PERF-888Getting issue details... STATUS . Other workflows performed normally. Resource usage was stable and corresponded to the load.
- Test with Fiscal year rollover average duration 3:21:51 for 30 tenants and 6:26:33 for 60 tenants, finished without errors, shows severe performance degradation for data import and data export workflows due to high database CPU usage 99.8%.
Recommendations
Database parameter group configuration:
parameter | changed value | default value | Comment |
---|---|---|---|
shared_buffers | SUM({DBInstanceClassMemory/24076},-50003) | SUM({DBInstanceClassMemory/12038},-50003) | Increases freeable db memory from 25% to 50% and decreases cache memory limit from 75% to 50% |
max_connections | LEAST({DBInstanceClassMemory/9531392},9000) | LEAST({DBInstanceClassMemory/9531392},5000) | Increases maximal connection limit from 5000 to 9000 connections |
Amazon OpenSearch Service
data node instance type - r6g.2xlarge.search
Services
mod-authtoken CPU - 1024, 6 tasks
okapi CPU-1536
nginx-okapi CPU-1536
For database size db.r6g.4xlarge
adjust task count to 6 for services:
- mod-authtoken
adjust task count to 4 for services:
- mod-permissions
- mod-search
- mod-patron
- mod-inventory
- mod-inventory-storage
- mod-circulation
- mod-circulation-storage
- mod-order
- mod-order-storage,
- mod-invoice
- mod-invoice-storage
- mod-users
For database size db.r6g.8xlarge
adjust task count to 6 for services:
- mod-authtoken
- mod-search
adjust task count to 4 for services:
- mod-permissions
- mod-patron
- mod-inventory
- mod-inventory-storage
- mod-circulation
- mod-circulation-storage
- mod-order
- mod-order-storage,
- mod-invoice
- mod-invoice-storage
- mod-organization
- mod-organization-storage
- mod-users
- mod-finance
- mod-finance-storage
- mod-configuration
"Receiving: downloading" workflow optimization
Test Runs
Test # | Workflows | Test Conditions | Results |
---|---|---|---|
1. | All workflows | 2 tasks for all of the modules (except the modules with 1 task by requirements) database r6g.4xlarge, shared_buffers parameters SUM({DBInstanceClassMemory/24076},-50003), Amazon OpenSearch Service r6g.2хlarge.search, | Completed |
2. | All workflows | Adjasted task count to 4 for services: mod-permissions, mod-search, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage, mod-order, mod-order-storage, mod-invoice, mod-invoice-storage, mod-users and task count 6 for mod-authtoken. Database r6g.4xlarge, shared_buffers parameters SUM({DBInstanceClassMemory/24076},-50003), Amazon OpenSearch Service r6g.2хlarge.search, mod-authtoken CPU - 1024, okapi CPU-1536, nginx-okapi CPU-1536 | Completed |
3. | Without ERW: Exporting Receiving Information to CSV | Adjasted task count to 4 for services: mod-permissions, mod-search, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage, mod-order, mod-order-storage, mod-invoice, mod-invoice-storage, mod-users and task count 6 for mod-authtoken. Database r6g.4xlarge, shared_buffers parameters SUM({DBInstanceClassMemory/24076},-50003), Amazon OpenSearch Service r6g.2хlarge.search, mod-authtoken CPU - 1024, okapi CPU-1536, nginx-okapi CPU-1536 | Completed |
4. | All workflows | Adjasted task count to 4 for services: mod-permissions, mod-search, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage, mod-order, mod-order-storage, mod-invoice, mod-invoice-storage, mod-users, mod-organization, mod-organization-storage, mod-finance, mod-finance-storage, mod-configuration and task count 6 for mod-authtoken, mod-search. Database r6g.8xlarge, shared_buffers parameters SUM({DBInstanceClassMemory/24076},-50003), Amazon OpenSearch Service r6g.2хlarge.search, mod-authtoken CPU - 1024, okapi CPU-1536, nginx-okapi CPU-1536 | Completed |
5. | Without ERW: Exporting Receiving Information to CSV | Adjasted task count to 4 for services: mod-permissions, mod-search, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage, mod-order, mod-order-storage, mod-invoice, mod-invoice-storage, mod-users, mod-organization, mod-organization-storage, mod-finance, mod-finance-storage, mod-configuration and task count 6 for mod-authtoken, mod-search. Database r6g.8xlarge, shared_buffers parameters SUM({DBInstanceClassMemory/24076},-50003), Amazon OpenSearch Service r6g.2хlarge.search, mod-authtoken CPU - 1024, okapi CPU-1536, nginx-okapi CPU-1536 | Completed |
6. | All workflows | Adjasted task count to 4 for services: mod-permissions, mod-search, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage, mod-order, mod-order-storage, mod-invoice, mod-invoice-storage, mod-users and task count 6 for mod-authtoken. Database r6g.4xlarge, shared_buffers parameters SUM({DBInstanceClassMemory/24076},-50003), Amazon OpenSearch Service r6g.2хlarge.search, mod-authtoken CPU - 1024, okapi CPU-1536, nginx-okapi CPU-1536 | Completed |
7. | All workflows, high-load | Adjasted task count to 4 for services: mod-permissions, mod-search, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage, mod-order, mod-order-storage, mod-invoice, mod-invoice-storage, mod-users and task count 6 for mod-authtoken. Database r6g.4xlarge, shared_buffers parameters SUM({DBInstanceClassMemory/24076},-50003), Amazon OpenSearch Service r6g.2хlarge.search, mod-authtoken CPU - 1024, okapi CPU-1536, nginx-okapi CPU-1536 | Completed with errors from data export |
8. | All no-acquisition workflows + Fiscal year rollover 30 tenants | Adjasted task count to 4 for services: mod-permissions, mod-search, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage, mod-order, mod-order-storage, mod-invoice, mod-invoice-storage, mod-users and task count 6 for mod-authtoken. Database r6g.4xlarge, shared_buffers parameters SUM({DBInstanceClassMemory/24076},-50003), Amazon OpenSearch Service r6g.2хlarge.search, mod-authtoken CPU - 1024, okapi CPU-1536, nginx-okapi CPU-1536 | Completed |
9. | All no-acquisition workflows + Fiscal year rollover 60 tenants | Adjasted task count to 4 for services: mod-permissions, mod-search, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage, mod-order, mod-order-storage, mod-invoice, mod-invoice-storage, mod-users and task count 6 for mod-authtoken. Database r6g.4xlarge, shared_buffers parameters SUM({DBInstanceClassMemory/24076},-50003), Amazon OpenSearch Service r6g.2хlarge.search, mod-authtoken CPU - 1024, okapi CPU-1536, nginx-okapi CPU-1536 | Completed with errors from data import |
Test Results
Test №1
Workflow | Average response time (milliseconds) | Errors |
---|---|---|
AIE_TC: Create Invoices | 22601 | 0 |
AIE_TC: Invoices Approve | 22107 | 0 |
AIE_TC: Paying Invoices | 22662 | 0 |
CICO_TC_Check-In Controller | 4724 | 0 |
CICO_TC_Check-Out Controller | 7842 | 0 |
CSI_TC:Share local instance | 16491 | 0 |
DE_Exporting MARC Bib records custom workflow | 338085 | 0 |
DE_Exporting MARC Bib records workflow | 333504 | 0 |
EVA_TC: View Account | 1838 | 0 |
ILR_TC: Create ILR | 3740 | 0 |
MSF_TC: mod search by auth query | 12044 | 0 |
MSF_TC: mod search by boolean query | 3365 | 0 |
MSF_TC: mod search by contributors | 5841 | 0 |
MSF_TC: mod search by filter query | 3332 | 0 |
MSF_TC: mod search by keyword query | 3376 | 0 |
MSF_TC: mod search by subject query | 5107 | 0 |
MSF_TC: mod search by title query | 6425 | 0 |
OPIH_/oai/records?verb=ListRecords&apikey=[APIKey]&resumptionToken=[resumptionToken] tenant-cs00000001 | 742 | 0 |
POO_TC: Add Order Lines | 105721 | 0 |
POO_TC: Approve Order | 88683 | 0 |
POO_TC Create Order | 56442 | 0 |
RTAC_TC: edge-rtac | 2735 | 0 |
SDIC_Single Record Import (Create) | 21459 | 0 |
SDIU_Single Record Import (Update) | 89233 | 0 |
TC: Receiving-an-Order-Line | 167843 | 0 |
Serials-Receiving-Workflow | 141327 | 0 |
Unreceiving-a-Piece | 59500 | 0 |
ULR_TC: Users loan Renewal Transaction | 6119 | 0 |
TOTAL | 1881 | 0 |
Test №2
Workflow | Average response time (milliseconds) | Errors |
---|---|---|
AIE_TC: Create Invoices | 8006 | 0 |
AIE_TC: Invoices Approve | 7035 | 0 |
AIE_TC: Paying Invoices | 6857 | 0 |
CICO_TC_Check-In Controller | 2254 | 0 |
CICO_TC_Check-Out Controller | 4037 | 0 |
CSI_TC:Share local instance | 15945 | 0 |
DE_Exporting MARC Bib records custom workflow | 43997 | 0 |
DE_Exporting MARC Bib records workflow | 42815 | 0 |
EVA_TC: View Account | 475 | 0 |
ILR_TC: Create ILR | 1505 | 0 |
MSF_TC: mod search by auth query | 544 | 0 |
MSF_TC: mod search by boolean query | 163 | 0 |
MSF_TC: mod search by contributors | 389 | 0 |
MSF_TC: mod search by filter query | 279 | 0 |
MSF_TC: mod search by keyword query | 280 | 0 |
MSF_TC: mod search by subject query | 406 | 0 |
MSF_TC: mod search by title query | 1040 | 0 |
OPIH_/oai/records | 849 | 0 |
POO_TC: Add Order Lines | 51776 | 0 |
POO_TC: Approve Order | 40309 | 0 |
POO_TC Create Order | 28708 | 0 |
RTAC_TC: edge-rtac | 2411 | 0 |
SDIC_Single Record Import (Create) | 11491 | 0 |
SDIU_Single Record Import (Update) | 19259 | 0 |
TC: Receiving-an-Order-Line | 88178 | 0 |
Serials-Receiving-Workflow | 83977 | 0 |
Unreceiving-a-Piece | 29205 | 0 |
ULR_TC: Users loan Renewal Transaction | 3256 | 0 |
TOTAL | 482.84 | 0 |
Test №3
Workflow | Average response time (milliseconds) | Errors |
---|---|---|
AIE_TC: Create Invoices | 3253 | 0 |
AIE_TC: Invoices Approve | 3941 | 0 |
AIE_TC: Paying Invoices | 4875 | 0 |
CICO_TC_Check-In Controller | 1728 | 0 |
CICO_TC_Check-Out Controller | 3055 | 0 |
CSI_TC:Share local instance | 15816 | 0 |
DE_Exporting MARC Bib records custom workflow | 41901 | 0 |
DE_Exporting MARC Bib records workflow | 51828 | 0 |
EVA_TC: View Account | 414 | 0 |
ILR_TC: Create ILR | 1098 | 0 |
MSF_TC: mod search by auth query | 557 | 0 |
MSF_TC: mod search by boolean query | 168 | 0 |
MSF_TC: mod search by contributors | 398 | 0 |
MSF_TC: mod search by filter query | 287 | 0 |
MSF_TC: mod search by keyword query | 289 | 0 |
MSF_TC: mod search by subject query | 413 | 0 |
MSF_TC: mod search by title query | 1050 | 0 |
OPIH_/oai/records | 1149 | 0 |
POO_TC: Add Order Lines | 6281 | 0 |
POO_TC: Approve Order | 2543 | 0 |
POO_TC Create Order | 2734 | 0 |
RTAC_TC: edge-rtac | 1693 | 0 |
SDIC_Single Record Import (Create) | 5449 | 0 |
SDIU_Single Record Import (Update) | 11500 | 0 |
TC: Receiving-an-Order-Line | 9322 | 0 |
Serials-Receiving-Workflow | 9683 | 0 |
Unreceiving-a-Piece | 2786 | 0 |
ULR_TC: Users loan Renewal Transaction | 2431 | 0 |
TOTAL | 103.99 | 0 |
Test №4
Workflow | Average response time (milliseconds) | Errors |
---|---|---|
AIE_TC: Create Invoices | 4848 | 0 |
AIE_TC: Invoices Approve | 4192 | 0 |
AIE_TC: Paying Invoices | 4372 | 0 |
CICO_TC_Check-In Controller | 1550 | 0 |
CICO_TC_Check-Out Controller | 2861 | 0 |
CSI_TC:Share local instance | 15853 | 0 |
DE_Exporting MARC Bib records custom workflow | 39251 | 0 |
DE_Exporting MARC Bib records workflow | 35215 | 0 |
EVA_TC: View Account | 389 | 0 |
ILR_TC: Create ILR | 1023 | 0 |
MSF_TC: mod search by auth query | 580 | 0 |
MSF_TC: mod search by boolean query | 172 | 0 |
MSF_TC: mod search by contributors | 413 | 0 |
MSF_TC: mod search by filter query | 298 | 0 |
MSF_TC: mod search by keyword query | 296 | 0 |
MSF_TC: mod search by subject query | 427 | 0 |
MSF_TC: mod search by title query | 1062 | 0 |
OPIH_/oai/records | 573 | 0 |
POO_TC: Add Order Lines | 28268 | 0 |
POO_TC: Approve Order | 20976 | 0 |
POO_TC Create Order | 15910 | 0 |
RTAC_TC: edge-rtac | 1355 | 0 |
SDIC_Single Record Import (Create) | 5858 | 0 |
SDIU_Single Record Import (Update) | 13391 | 0 |
TC: Receiving-an-Order-Line | 47492 | 0 |
Serials-Receiving-Workflow | 46040 | 0 |
Unreceiving-a-Piece | 15808 | 0 |
ULR_TC: Users loan Renewal Transaction | 2239 | 0 |
TOTAL | 328.12 | 0 |
Test №5
Workflow | Average response time (milliseconds) | Errors |
---|---|---|
AIE_TC: Create Invoices | 2498 | 0 |
AIE_TC: Invoices Approve | 3074 | 0 |
AIE_TC: Paying Invoices | 3834 | 0 |
CICO_TC_Check-In Controller | 1348 | 0 |
CICO_TC_Check-Out Controller | 2311 | 0 |
CSI_TC:Share local instance | 15720 | 0 |
DE_Exporting MARC Bib records custom workflow | 35699 | 0 |
DE_Exporting MARC Bib records workflow | 35379 | 0 |
EVA_TC: View Account | 364 | 0 |
ILR_TC: Create ILR | 817 | 0 |
MSF_TC: mod search by auth query | 549 | 0 |
MSF_TC: mod search by boolean query | 163 | 0 |
MSF_TC: mod search by contributors | 391 | 0 |
MSF_TC: mod search by filter query | 283 | 0 |
MSF_TC: mod search by keyword query | 285 | 0 |
MSF_TC: mod search by subject query | 407 | 0 |
MSF_TC: mod search by title query | 1034 | 0 |
OPIH_/oai/records | 544 | 0 |
POO_TC: Add Order Lines | 4939 | 0 |
POO_TC: Approve Order | 2021 | 0 |
POO_TC Create Order | 2182 | 0 |
RTAC_TC: edge-rtac | 1282 | 0 |
SDIC_Single Record Import (Create) | 4310 | 0 |
SDIU_Single Record Import (Update) | 10350 | 0 |
TC: Receiving-an-Order-Line | 7873 | 0 |
Serials-Receiving-Workflow | 8156 | 0 |
Unreceiving-a-Piece | 2295 | 0 |
ULR_TC: Users loan Renewal Transaction | 1896 | 0 |
TOTAL | 83.14 | 0 |
Test №6 longevity test
Workflow | Average response time (milliseconds) | Errors |
---|---|---|
AIE_TC: Create Invoices | 9601 | |
AIE_TC: Invoices Approve | 8468 | |
AIE_TC: Paying Invoices | 8429 | |
CICO_TC_Check-In Controller | 2818 | |
CICO_TC_Check-Out Controller | 5302 | |
CSI_TC:Share local instance | 15913 | |
DE_Exporting MARC Bib records custom workflow | 70668 | |
DE_Exporting MARC Bib records workflow | 85667 | |
EVA_TC: View Account | 619 | |
ILR_TC: Create ILR | 1887 | |
MSF_TC: mod search by auth query | 1338 | |
MSF_TC: mod search by boolean query | 295 | |
MSF_TC: mod search by contributors | 697 | |
MSF_TC: mod search by filter query | 490 | |
MSF_TC: mod search by keyword query | 510 | |
MSF_TC: mod search by subject query | 897 | |
MSF_TC: mod search by title query | 2125 | |
OPIH_/oai/records | 4621 | |
POO_TC: Add Order Lines | 60980 | |
POO_TC: Approve Order | 45081 | |
POO_TC Create Order | 35638 | |
RTAC_TC: edge-rtac | 2578 | |
SDIC_Single Record Import (Create) | 13536 | |
SDIU_Single Record Import (Update) | 22836 | |
TC: Receiving-an-Order-Line | 100855 | |
Serials-Receiving-Workflow | 104166 | |
Unreceiving-a-Piece | 35176 | |
ULR_TC: Users loan Renewal Transaction | 3704 | |
TOTAL |
Test №7 High load test
Workflow | Average response time (milliseconds) | errors |
---|---|---|
AIE_TC: Create Invoices | 22599 | 0 |
AIE_TC: Invoices Approve | 21173 | 0 |
AIE_TC: Paying Invoices | 21655 | 0 |
CICO_TC_Check-In Controller | 4235 | 0 |
CICO_TC_Check-Out Controller | 7386 | 0 |
CSI_TC:Share local instance | 14032 | 0 |
DE_Exporting MARC Bib records custom workflow | 364405 | 23 |
DE_Exporting MARC Bib records workflow | 356786 | 31 |
EVA_TC: View Account | 913 | 9 - 0.22% from 4055 |
ILR_TC: Create ILR | 2697 | 0 |
MSF_TC: mod search by auth query | 906 | 0 |
MSF_TC: mod search by boolean query | 276 | 0 |
MSF_TC: mod search by contributors | 600 | 0 |
MSF_TC: mod search by filter query | 404 | 0 |
MSF_TC: mod search by keyword query | 407 | 0 |
MSF_TC: mod search by subject query | 749 | 0 |
MSF_TC: mod search by title query | 1548 | 0 |
OPIH_/oai/records | 1104 | 0 |
POO_TC: Add Order Lines | 102921 | 0 |
POO_TC: Approve Order | 79036 | 0 |
POO_TC Create Order | 57837 | 0 |
RTAC_TC: edge-rtac | 11028 | 0 |
SDIC_Single Record Import (Create) | 26095 | 0 |
SDIU_Single Record Import (Update) | 37400 | 0 |
TC: Receiving-an-Order-Line | 147619 | 0 |
Serials-Receiving-Workflow | 143994 | 0 |
Unreceiving-a-Piece | 50747 | 0 |
ULR_TC: Users loan Renewal Transaction | 6176 | 0 |
OPFH | 1271 | 0 |
TOTAL | 1279 | data export issues |
Test №8 Fiscal year rollover (30 tenants)
On the tenant cs00000001_0001 was performed test without other workflows and only 1 fiscal year rollover, duration was 1:24:52.
FYR | 30 tenants | ordersRolloverStatus | overallRolloverStatus | financialRolloverStatu | budgetsClosingRolloverStatus |
---|---|---|---|---|---|
Average FYR time | 3:21:51 | ||||
cs00000001_0002 | 2:54:30 | Success | Success | Success | Success |
cs00000001_0003 | 3:37:00 | Success | Success | Success | Success |
cs00000001_0004 | 2:53:22 | Success | Success | Success | Success |
cs00000001_0005 | 3:45:51 | Success | Success | Success | Success |
cs00000001_0006 | 2:55:25 | Success | Success | Success | Success |
cs00000001_0007 | 0:00:00 * | Not Started | Not Started | Not Started | Not Started |
cs00000001_0008 | 3:36:40 | Success | Success | Success | Success |
cs00000001_0009 | 2:56:24 | Success | Success | Success | Success |
cs00000001_0010 | 2:57:10 | Success | Success | Success | Success |
cs00000001_0011 | 3:35:20 | Success | Success | Success | Success |
cs00000001_0012 | 3:37:20 | Success | Success | Success | Success |
cs00000001_0013 | 3:34:23 | Success | Success | Success | Success |
cs00000001_0014 | 3:48:25 | Success | Success | Success | Success |
cs00000001_0015 | 3:47:25 | Success | Success | Success | Success |
cs00000001_0016 | 3:47:25 | Success | Success | Success | Success |
cs00000001_0017 | 3:36:27 | Success | Success | Success | Success |
cs00000001_0018 | 3:01:12 | Success | Success | Success | Success |
cs00000001_0019 | 3:46:49 | Success | Success | Success | Success |
cs00000001_0021 | 2:58:25 | Success | Success | Success | Success |
cs00000001_0022 | 3:44:58 | Success | Success | Success | Success |
cs00000001_0023 | 3:00:47 | Success | Success | Success | Success |
cs00000001_0024 | 2:58:20 | Success | Success | Success | Success |
cs00000001_0025 | 3:45:31 | Success | Success | Success | Success |
cs00000001_0026 | 2:59:31 | Success | Success | Success | Success |
cs00000001_0027 | 3:44:23 | Success | Success | Success | Success |
cs00000001_0028 | 3:33:36 | Success | Success | Success | Success |
cs00000001_0029 | 2:59:34 | Success | Success | Success | Success |
cs00000001_0030 | 2:57:58 | Success | Success | Success | Success |
cs00000001_0031 | 3:32:05 | Success | Success | Success | Success |
cs00000001_0058 | 3:07:29 | Success | Success | Success | Success |
* - for tenant cs00000001_0007 FYR was not started properly(mechanical mistake due to manual start). Database was restored from snapshot for the next test with 60 tenants and finished successful for all tenants.
FYR 30 | errors | |
CICO_TC_Check-In Controller | 2254 | 0 |
CICO_TC_Check-Out Controller | 4004 | 0 |
CSI_TC:Share local instance | 15921 | 0 |
DE_Exporting MARC Bib records custom workflow | 49195 | 0 |
DE_Exporting MARC Bib records workflow | 55158 | 0 |
EVA_TC: View Account | 451 | 0.02% |
ILR_TC: Create ILR | 1473 | 0 |
MSF_TC: mod search by auth query | 498 | 0 |
MSF_TC: mod search by boolean query | 150 | 0 |
MSF_TC: mod search by contributors | 366 | 0 |
MSF_TC: mod search by filter query | 262 | 0 |
MSF_TC: mod search by keyword query | 261 | 0 |
MSF_TC: mod search by subject query | 425 | 0 |
MSF_TC: mod search by title query | 1027 | 0 |
OPIH_/oai/records | 1387 | 0 |
RTAC_TC: edge-rtac | 2176 | 0 |
SDIC_Single Record Import (Create) | 21684 | 0 |
SDIU_Single Record Import (Update) | 45174 | 0 |
ULR_TC: Users loan Renewal Transaction | 3078 | 0 |
TOTAL | 309 | 0 |
Test №9 Fiscal year rollover (60 tenants)
FYR | 60 tenants | ordersRolloverStatus | overallRolloverStatus | financialRolloverStatus | budgetsClosingRolloverStatus |
---|---|---|---|---|---|
Average FYR time | 6:26:33 | ||||
cs00000001_0002 | 6:20:54 | Success | Success | Success | Success |
cs00000001_0003 | 6:28:36 | Success | Success | Success | Success |
cs00000001_0004 | 5:16:45 | Success | Success | Success | Success |
cs00000001_0005 | 6:09:05 | Success | Success | Success | Success |
cs00000001_0006 | 6:30:16 | Success | Success | Success | Success |
cs00000001_0007 | 5:19:39 | Success | Success | Success | Success |
cs00000001_0008 | 6:14:02 | Success | Success | Success | Success |
cs00000001_0009 | 6:32:53 | Success | Success | Success | Success |
cs00000001_0010 | 6:16:17 | Success | Success | Success | Success |
cs00000001_0011 | 6:25:58 | Success | Success | Success | Success |
cs00000001_0012 | 6:48:33 | Success | Success | Success | Success |
cs00000001_0013 | 6:47:37 | Success | Success | Success | Success |
cs00000001_0014 | 6:49:36 | Success | Success | Success | Success |
cs00000001_0015 | 6:46:31 | Success | Success | Success | Success |
cs00000001_0016 | 6:49:23 | Success | Success | Success | Success |
cs00000001_0017 | 6:51:49 | Success | Success | Success | Success |
cs00000001_0018 | 6:31:28 | Success | Success | Success | Success |
cs00000001_0019 | 6:29:45 | Success | Success | Success | Success |
cs00000001_0021 | 5:52:25 | Success | Success | Success | Success |
cs00000001_0022 | 6:49:04 | Success | Success | Success | Success |
cs00000001_0023 | 6:50:44 | Success | Success | Success | Success |
cs00000001_0024 | 5:51:44 | Success | Success | Success | Success |
cs00000001_0025 | 5:51:54 | Success | Success | Success | Success |
cs00000001_0026 | 6:54:53 | Success | Success | Success | Success |
cs00000001_0027 | 6:30:05 | Success | Success | Success | Success |
cs00000001_0028 | 6:54:06 | Success | Success | Success | Success |
cs00000001_0029 | 6:54:57 | Success | Success | Success | Success |
cs00000001_0030 | 6:29:03 | Success | Success | Success | Success |
cs00000001_0031 | 5:52:42 | Success | Success | Success | Success |
cs00000001_0032 | 6:46:42 | Success | Success | Success | Success |
cs00000001_0033 | 6:46:17 | Success | Success | Success | Success |
cs00000001_0034 | 6:53:40 | Success | Success | Success | Success |
cs00000001_0035 | 6:27:10 | Success | Success | Success | Success |
cs00000001_0036 | 6:52:56 | Success | Success | Success | Success |
cs00000001_0037 | 5:53:08 | Success | Success | Success | Success |
cs00000001_0038 | 6:51:47 | Success | Success | Success | Success |
cs00000001_0039 | 6:43:38 | Success | Success | Success | Success |
cs00000001_0040 | 6:50:57 | Success | Success | Success | Success |
cs00000001_0041 | 6:50:25 | Success | Success | Success | Success |
cs00000001_0042 | 5:51:07 | Success | Success | Success | Success |
cs00000001_0043 | 6:49:32 | Success | Success | Success | Success |
cs00000001_0044 | 6:24:14 | Success | Success | Success | Success |
cs00000001_0045 | 5:50:48 | Success | Success | Success | Success |
cs00000001_0046 | 6:24:16 | Success | Success | Success | Success |
cs00000001_0047 | 6:48:19 | Success | Success | Success | Success |
cs00000001_0048 | 5:49:26 | Success | Success | Success | Success |
cs00000001_0049 | 5:49:01 | Success | Success | Success | Success |
cs00000001_0050 | 6:39:57 | Success | Success | Success | Success |
cs00000001_0051 | 6:22:53 | Success | Success | Success | Success |
cs00000001_0052 | 6:21:09 | Success | Success | Success | Success |
cs00000001_0053 | 6:37:53 | Success | Success | Success | Success |
cs00000001_0054 | 6:37:42 | Success | Success | Success | Success |
cs00000001_0055 | 6:21:08 | Success | Success | Success | Success |
cs00000001_0056 | 6:36:46 | Success | Success | Success | Success |
cs00000001_0057 | 6:19:53 | Success | Success | Success | Success |
cs00000001_0058 | 6:43:31 | Success | Success | Success | Success |
cs00000001_0059 | 6:35:42 | Success | Success | Success | Success |
cs00000001_0060 | 6:42:28 | Success | Success | Success | Success |
cs00000001_0061 | 5:44:17 | Success | Success | Success | Success |
cs00000001_0062 | 5:45:11 | Success | Success | Success | Success |
FYR 60 | errors | |
CICO_TC_Check-In Controller | 2310 | 0 |
CICO_TC_Check-Out Controller | 4065 | 0 |
CSI_TC:Share local instance | 16022 | 0 |
DE_Exporting MARC Bib records custom workflow | 64282 | 0 |
DE_Exporting MARC Bib records workflow | 58908 | 0 |
EVA_TC: View Account | 479 | 0.05% |
ILR_TC: Create ILR | 1561 | 0 |
MSF_TC: mod search by auth query | 516 | 0 |
MSF_TC: mod search by boolean query | 154 | 0 |
MSF_TC: mod search by contributors | 367 | 0 |
MSF_TC: mod search by filter query | 266 | 0 |
MSF_TC: mod search by keyword query | 263 | 0 |
MSF_TC: mod search by subject query | 428 | 0 |
MSF_TC: mod search by title query | 1049 | 0 |
OPIH_/oai/records | 1263 | 0 |
RTAC_TC: edge-rtac | 2245 | 0 |
SDIC_Single Record Import (Create) | 84463 | 0.27% |
SDIU_Single Record Import (Update) | 174780 | 0.12% |
ULR_TC: Users loan Renewal Transaction | 1022 | 0 |
TOTAL | 400 | 0 |
Comparison of the test results with tuned and not tuned environment
The following diagram compares all test results of MOBIUS Baseline Tests: CI/CO.
Baseline (milliseconds) | Tuned with Receiving: downloading (milliseconds) | Tuned without Receiving: downloading (milliseconds) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
db.r6g.4xlarge | Errors | Test №1 db.r6g.4xlarge 2 tasks for all of the modules | Errors | Test №2 db.r6g.4xlarge | Test №4 db.r6g.8xlarge-configs for 8xlarge db | Errors | Delta 4xlarge and 8xlarge db | Test №3 db.r6g.4xlarge | Test №5 db.r6g.8xlarge -configs for 8xlarge db | Errors | Delta 4xlarge and 8xlarge db | |
AIE_TC: Create Invoices | 34730 | 0 | 22601 | 0 | 8006 | 4848 | 0 | -39.45 | 3253 | 2498 | 0 | -23.21 |
AIE_TC: Invoices Approve | 33130 | 0 | 22107 | 0 | 7035 | 4192 | 0 | -40.41 | 3941 | 3074 | 0 | -22.00 |
AIE_TC: Paying Invoices | 31119 | 0 | 22662 | 0 | 6857 | 4372 | 0 | -36.24 | 4875 | 3834 | 0 | -21.35 |
CICO_TC_Check-In Controller | 6420 | 1 | 4724 | 0 | 2254 | 1550 | 0 | -31.23 | 1728 | 1348 | 0 | -21.99 |
CICO_TC_Check-Out Controller | 10520 | 4 | 7842 | 0 | 4037 | 2861 | 0 | -29.13 | 3055 | 2311 | 0 | -24.35 |
CSI_TC:Share local instance | 11018 | 43 | 16491 | 0 | 15945 | 15853 | 0 | -0.58 | 15816 | 15720 | 0 | -0.61 |
DE_Exporting MARC Bib records custom workflow | 53296 | 0 | 38085 | 0 | 43997 | 39251 | 0 | -10.79 | 41901 | 35699 | 0 | -14.80 |
DE_Exporting MARC Bib records workflow | 36563 | 0 | 33504 | 0 | 42815 | 35215 | 0 | -17.75 | 51828 | 35379 | 0 | -31.74 |
EVA_TC: View Account | - | 21 | 1838 | 0 | 475 | 389 | 0 | -18.11 | 414 | 364 | 0 | -12.08 |
ILR_TC: Create ILR | 5085 | 2 | 3740 | 0 | 1505 | 1023 | 0 | -32.03 | 1098 | 817 | 0 | -25.59 |
MSF_TC: mod search by auth query | 1880 (average for all search flows) | 52 | 12044 | 0 | 544 | 580 | 0 | 6.62 | 557 | 549 | 0 | -1.44 |
MSF_TC: mod search by boolean query | 3365 | 0 | 163 | 172 | 0 | 5.52 | 168 | 163 | 0 | -2.98 | ||
MSF_TC: mod search by contributors | 5841 | 0 | 389 | 413 | 0 | 6.17 | 398 | 391 | 0 | -1.76 | ||
MSF_TC: mod search by filter query | 3332 | 0 | 279 | 298 | 0 | 6.81 | 287 | 283 | 0 | -1.39 | ||
MSF_TC: mod search by keyword query | 3376 | 0 | 280 | 296 | 0 | 5.71 | 289 | 285 | 0 | -1.38 | ||
MSF_TC: mod search by subject query | 5107 | 0 | 406 | 427 | 0 | 5.17 | 413 | 407 | 0 | -1.45 | ||
MSF_TC: mod search by title query | 6425 | 0 | 1040 | 1062 | 0 | 2.12 | 1050 | 1034 | 0 | -1.52 | ||
OPIH_/oai/records | - | - | 742 | 0 | 849 | 573 | 0 | -32.51 | 1149 | 544 | 0 | -52.65 |
POO_TC: Add Order Lines | 185765 | 415(API- the same in UI) | 105721 | 0 | 51776 | 28268 | 0 | -45.40 | 6281 | 4939 | 0 | -21.37 |
POO_TC: Approve Order | 146352 | 0 | 88683 | 0 | 40309 | 20976 | 0 | -47.96 | 2543 | 2021 | 0 | -20.53 |
POO_TC Create Order | 99937 | 0 | 56442 | 0 | 28708 | 15910 | 0 | -44.58 | 2734 | 2182 | 0 | -20.19 |
RTAC_TC: edge-rtac | - | 0 | 2735 | 0 | 2411 | 1355 | 0 | -43.80 | 1693 | 1282 | 0 | -24.28 |
SDIC_Single Record Import (Create) | 30395 | 44 | 21459 | 0 | 11491 | 5858 | 0 | -49.02 | 5449 | 4310 | 0 | -20.90 |
SDIU_Single Record Import (Update) | 96046 | 3 | 89233 | 0 | 19259 | 13391 | 0 | -30.47 | 11500 | 10350 | 0 | -10.00 |
TC: Receiving-an-Order-Line | 307271 | 0 | 167843 | 0 | 88178 | 47492 | 0 | -46.14 | 9322 | 7873 | 0 | -15.54 |
Serials-Receiving-Workflow | 282336 | 0 | 141327 | 0 | 83977 | 46040 | 0 | -45.18 | 9683 | 8156 | 0 | -15.77 |
Unreceiving-a-Piece | 106148 | 0 | 59500 | 0 | 29205 | 15808 | 0 | -45.87 | 2786 | 2295 | 0 | -17.62 |
ULR_TC: Users loan Renewal Transaction | 8023 | 6 | 6119 | 0 | 3256 | 2239 | 0 | -31.23 | 2431 | 1896 | 0 | -22.01 |
TOTAL | - | - | 1881 | 0 | 482.84 | 328.12 | 0 | -32.04 | 103.99 | 83.14 | 0 | -20.05 |
Service CPU Utilization
It did not exceed 95% for all of the modules.
Service Memory Utilization
Here we can't see any sign of memory leaks on every module. Memory shows stable trend.
DB CPU Utilization
DB CPU was 98% average with ERW: Exporting Receiving Information to CSV and 75% without.
DB Connections
DB connections maximum 5700.
Resource utilization for Test #4
Service CPU Utilization
It did not exceed 95% for all of the modules.
Service Memory Utilization
Here we can't see any sign of memory leaks on every module. Memory shows stable trend.
DB CPU Utilization
DB CPU was 38% average.
DB Connections
DB connections were up to 5420.
Resource utilization for Test #5
Service CPU Utilization
It did not exceed 95% for all of the modules.
Service Memory Utilization
Here we can't see any sign of memory leaks on every module. Memory shows stable trend.
DB CPU Utilization
DB CPU was 38% average.
DB Connections
DB connections were up to 5210.
Resource utilization for Test #6 longevity
Service CPU Utilization
Test completed successfully without sudden fails and/or modules restart. All modules are stable.
CPU utilisation didn't exceed 90%. (most used module is mod-permissions).
Only module that has spikes in CPU usage is mod-pubsub. (may be related to background jobs)
Service Memory Utilization
No memory leaks found.
All modules behaviour is stable.
DB CPU Utilization
DB Connections
Db used ±6K connections during whole duration of a test
Resource utilization for Test #7 High load
Instance CPU Utilization
CPU utilization didn't exceed 55%.
Service CPU Utilization
CPU utilization didn't exceed 110%.
Service Memory Utilization
It was observed an issue for mod-data-export - PERF-927Getting issue details... STATUS .
All modules' behavior is stable except mod-data-export.
DB CPU Utilization
DB Connections
Db used up to 7K connections
Open Search Resources utilization
Kafka Resources utilization
Resource utilization for Test #8 FYR (30 tenants)
Instance CPU Utilization
It did not exceed 26%.
Service CPU Utilization
It did not exceed 85% for all of the modules.
Service Memory Utilization
All modules' behavior is stable.
DB CPU Utilization
DB CPU was 99.8% average.
DB Connections
Db used up to 5K connections
DB Freeable Memory
During the test, it was not less than 35G of freeable memory.
Resource utilization for Test #9 FYR (60 tenants)
Instance CPU Utilization
It did not exceed 27%.
Service CPU Utilization
It did not exceed 100% for all of the modules.
Service Memory Utilization
All modules' behavior is stable.
DB CPU Utilization
DB CPU was 99.8% average.
DB Connections
Db used up to 5K connections
Appendix
Infrastructure
PTF - environment mcpt
- 14 m6g.2xlarge EC2 instances located in US East (N. Virginia)us-east-1
1 database instance, writer
one of
Name Memory GIB vCPUs db.r6g.4xlarge
128 GiB 16 vCPUs db.r6g.8xlarge 256 GiB 32 vCPUs - Amazon OpenSearch Service: ptf-test
- Data nodes
Instance type-r6g.2xlarge.search
Number of nodes-4
- Dedicated master nodes
Instance type-r6g.large.search
Number of nodes-3
- Data nodes
- MSK ptf-mobius-testing2
- 2 m5.2xlarge brokers in 2 zones
Apache Kafka version 2.8.0
EBS storage volume per broker 300 GiB
- auto.create.topics.enable=true
- log.retention.minutes=480
- default.replication.factor=2
Modules memory and CPU parameters:
db.r6g.4xlarge
Methodology/Approach
MOBIUS Tests: scenarios were started by carrier.io or from load generator instance in the same (us-east-1) AWS region.
The database contains five times more generated data for large tenant IDs compared to small tenant IDs. The table below displays the average count of generated instances and items for both small and large tenants..
tenant | instances | items |
---|---|---|
Small | 84754 | 103137 |
Large | 416176 | 543428 |
The attached file contains full info about generated data per tenant.
large tenants IDs = 0042, 0024, 0051, 0006
- Run data preparation script before test
- Create artifacts and upload them to carrier-io or to load generator instance in the same (us-east-1) AWS region
- Change parameters and run tests
- Executed one workflow per minute concurrently (2 for 4 large tenants).
Discussions
At the initial stage of testing, there were numerous errors from various workflows, most notably those involving search. While investigating the cause of the errors, it was found that there was insufficient CPU capacity (100% utilization) on the data nodes of the OpenSearch cluster. Initially, testing was done with r6g.large.search, then increased to r6g.4xlarge.search, but it was too large and only utilized 40% CPU. Therefore, it was downsized to r6g.2xlarge.search, with the number of containers (tasks) increased to 4 for mod-search.
However, after identifying the issue related to search, a problem with the database persisted, such as OOM (Out of Memory). Two options were tested to address this issue: increasing the database size to db.r6g.8xlarge and adjusting the shared_buffers configuration to SUM({DBInstanceClassMemory/24076},-50003) for the size of db.r6g.4xlarge. Both tests showed promising results; however, in both cases, there were errors related to an insufficient number of connections to the database in the logs ("remaining connection slots are reserved for non-replication superuser and rds_superuser connections"). To address this, the max_connections configuration was set to LEAST({DBInstanceClassMemory/9531392},9000) for both sizes of the database, increasing the upper limit of connections to the database to 9000.
All of these measures helped to eliminate errors, but response times remained high, especially for check-in and check-out. To improve response time, we increased the number of containers for mod-authtoken to 4, which yielded very good results. Additionally, we improved response times for all circulation workflows by setting 4 containers for each: mod-permissions, mod-patron, mod-inventory, mod-inventory-storage, mod-circulation, mod-circulation-storage