[Poppy] List App with single tenant and R/W split enabled
Overview
This document contains the results of testing Lists App refreshing multiple concurrent lists of 200k records on single tenant with R/W split enabled (Poppy release). The goal of testing is to assess the performance of the Lists App modules (mod-lists, mod-fqm-manager) with load from across multiple users.
Ticket: - PERF-718Getting issue details... STATUS
Summary
- Load tests showed that single tenant ListApp refresh duration is:
- 2.6 min for 1 refresh test;
- 3.1 min for 3 concurrent refresh tests;
- 4.2 min for 5 concurrent refresh tests;
- 6.5 min for 10 concurrent refresh tests.
- Duration is below the maximum accepted value of 10 minutes.
- Tests showed that the same load (number of concurrent lists refreshes) on three tenants performs better than on one tenant. For example on one tenant, 3-concurrent list refreshes took 3.1 minutes on average, but on 3 tenants only 1.5 minutes. On one tenant 10 concurrent lists-refreshes took 6.5 minutes on average, but the same load on 3 tenants averaged 2.3 minutes.
- During the 10 lists refresh test CPU utilization reached 89% for mod-fqm-manager and 101% for mod-lists. In comparison with multiple tenants testing, CPU utilization for mod-fqm-manager is about 2 times lower for a single tenant test.
- Maximum DB CPU utilization reached 63% (writer instance) and 99% (reader instance) during 10 lists-refresh test. In comparison with multiple tenants testing, RDS CPU utilization for writer instance is 20% lower for single tenant test.
- No memory leak is suspected for all the modules.
Test runs
Query used in lists - "Item status != Available". List refresh result is about 200K records.
Scenario | Data quantity |
---|---|
List App refresh single tenant | 1 list |
3 concurrent lists | |
5 concurrent lists | |
10 concurrent lists |
Results
Lists App refresh avg | 1 list | 3 lists | 5 lists | 10 lists |
---|---|---|---|---|
Poppy, single tenant, R/W split enabled | 2.6 min | 3.1 min | 4.2 min | 6.5 min |
Poppy, multiple tenants, R/W split enabled* | 1.5 min | 2.3 min | ||
Poppy, multiple tenants, R/W split disabled** | 1.9 min | 3.4 min |
*Results are taken from previous test report: [Poppy] List App with multiple tenants and R/W split enabled
**Results are taken from previous test report: [Poppy] List App with multiple tenants and R/W split disabled
Service CPU Utilization
During the 10 lists refreshes test CPU utilization reached 89% for mod-fqm-manager and 101% for mod-lists.
In comparison with multiple tenants testing, CPU utilization for mod-fqm-manager is about 2 times lower for single tenant test.
Memory Utilization
No memory leak is suspected for all the modules.
DB CPU Utilization
Maximum DB CPU utilization reached 63% (writer instance) and 99% (reader instance) during 10 lists test.
In comparison with multiple tenants testing, RDS CPU utilization for writer instance is 20% lower for single tenant test.
DB Connections
DB Load
TOP SQL
Writer DB node
Reader DB node
Long-running queries:
|
|
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
Module | Task Def. Revision | Task Count | Mem Hard Limit | Mem Soft limit | CPU units | Xmx | MetaspaceSize | MaxMetaspaceSize | R/W split enabled |
---|---|---|---|---|---|---|---|---|---|
mod-inventory-storage:27.0.0 | 10 | 2 | 4096 | 3690 | 2048 | 3076 | 384 | 512 | false |
mod-users:19.2.0 | 19 | 2 | 1024 | 896 | 128 | 768 | 88 | 128 | false |
nginx-okapi:2023.06.14 | 8 | 2 | 1024 | 896 | 128 | 0 | 0 | 0 | false |
mod-circulation-storage:17.1.0 | 10 | 2 | 2880 | 2592 | 1536 | 1814 | 384 | 512 | false |
okapi:5.1.1 | 9 | 3 | 1684 | 1440 | 1024 | 922 | 384 | 512 | false |
mod-inventory:20.1.0 | 9 | 2 | 2880 | 2592 | 1024 | 1814 | 384 | 512 | false |
mod-circulation:24.0.0 | 10 | 2 | 2880 | 2592 | 1536 | 1814 | 384 | 512 | false |
pub-okapi:2023.06.14 | 8 | 2 | 1024 | 896 | 128 | 768 | 0 | 0 | false |
mod-fqm-manager:1.0.0 | 5 | 2 | 1024 | 896 | 128 | 768 | 88 | 128 | true |
mod-lists:1.0.0 | 5 | 2 | 3000 | 2600 | 128 | 2048 | 384 | 512 | false |
Methodology
- Enable R/W split for mod-fqm-manager.
- Create 10 lists with the query "Item status != Available" on each of three tenants to be able to run a test for up to 30 concurrent users.
- Prepare 200K item records for the query to return. Details can be found at the link: Steps for testing process#ListApp
- Conduct tests with JMeter script (single tenant).