[Poppy] List App with multiple workflows and R/W split disabled test report
Overview
This document contains the results of testing List App refreshing of 200k records with multiple parallel workflows (Check-in/Check-out and Data import) in the Poppy release. The goal of testing is to assess the performance of mod-lists along with other workflows (CICO and DI) and to measure mod-lists's impact on other modules
Ticket:
- PERF-668Getting issue details... STATUS
- PERF-691Getting issue details... STATUS
Summary
- ListApp refreshing duration is about 8.5 min when testing separately from other workflows. With Data Import and Check-in/Check-out scenarios added ListApp duration has +108% increase and reaches 17.7 min. It's above the expected value of 10 minutes.
- Data Import and Check-in/Check-out response times have increase about 10-20% with ListApp scenario added.
- According to the results, maximum CPU utilization for DI + CICO test is about 85%, while with ListApp scenario added CPU reaches 160%.
- RDS CPU utilizatoin is about 95% for DI+CICO test and it doesn't increase with ListApp scenario added.
Test runs
Query used in lists - "Item status == Checked out". List refresh result is 200K records.
Scenario | Data quantity |
---|---|
List App + Check-in/Check-out + Data Import Create* | ListApp - 10 users CICO - 20 users DI - 25k |
Check-in/Check-out + Data import* | CICO - 20 users DI - 25k |
List App | ListApp - 10 users |
*PTF Create 2 job was used for DI scneario
Results
Transaction | Duration | Degradation | ||
---|---|---|---|---|
[Orchid] Testing separately | [Poppy] Testing separately (ListApp and DI+CICO) | [Poppy] Testing in parallel | ||
ListApp refresh, avg | from 9 min 40 sec to 10 min 40 sec | 8.5 min | 17.7 min | +108% |
Check-in, avg | 1.173 sec | 1.290 sec | +9.9% | |
Check-out, avg | 1.648 sec | 1.948 sec | +18.2% | |
DI Create 25k | 18 min | 22 min | +22% |
Grafana results
DI + CICO
ListApp + DI + CICO
Instance CPU Utilization
ListApp
DI + CICO
ListApp + DI + CICO
Service CPU Utilization
According to the results, maximum CPU utilization for DI + CICO test is about 85%, while with ListApp scenario added CPU reaches 160%.
ListApp
DI + CICO
ListApp + DI + CICO
Memory Utilization
No memory leaks were found during the tests.
ListApp
DI + CICO
ListApp + DI + CICO
DB CPU Utilization
RDS CPU utilizatoin is about 95% for DI+CICO test and it doesn't increase with ListApp scenario added.
ListApp
DI + CICO
ListApp + DI + CICO
DB Load
ListApp
DI + CICO
ListApp + DI + CICO
Appendix
Infrastructure
PTF -environment pcp1
- 10 m6i.2xlarge EC2 instances located in US East (N. Virginia)us-east-1
1 database instance, writer
Name API Name Memory GIB vCPUs max_connections R6G Extra Large db.r6g.xlarge 32 GiB 4 vCPUs 2731 - MSK tenant
- 4 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=3
Additional info
Grafana graphs:
List App + Check-in/Check-out + Data Import Create
Check-in/Check-out + Data import
Methodology
1.Prepare data for ListApp: check-out 200K items with CICO JMeter script.
2. Disable timers before running the tests:
curl -XPATCH -d'{"id":"mod-circulation-storage_1","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_4","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_1","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation-storage_0","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_3","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_8","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_9","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_0","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_2","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_5","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_6","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_7","routingEntry":{"delay":"0"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
3. Conduct test with ListApp scenario
4. Conduct test with ListApp scenario + CICO + DI
5. Conduct test withCICO + DI scenarios
6. Compare the results
7. Enable timers:
curl -XPATCH -d'{"id":"mod-circulation-storage_1","routingEntry":{"delay":"5"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_4","routingEntry":{"delay":"2"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_1","routingEntry":{"delay":"3"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation-storage_0","routingEntry":{"delay":"2"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_3","routingEntry":{"delay":"5"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_8","routingEntry":{"delay":"30"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_9","routingEntry":{"delay":"35"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_0","routingEntry":{"delay":"3"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_2","routingEntry":{"delay":"20"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_5","routingEntry":{"delay":"2"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_6","routingEntry":{"delay":"2"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers
curl -XPATCH -d'{"id":"mod-circulation_7","routingEntry":{"delay":"60"}}' https://okapi-ptf-pcp1-00.int.aws.folio.org/_/proxy/tenants/fs09000000/timers