[Orchid] List App test report


Overview

This document contains the results of testing List App refreshing of 200k records in the Orchid release. PERF-619 - Getting issue details... STATUS

Summary

  • Duration for list refresh of 200k records is up to 11 minutes 40 seconds for 10 concurrent users.
  • Memory utilization increasing for mod-lists up to 33% due to previous module restarting and everyday cluster shutdown processes - no memory leak is suspected for all of the modules.
  • For mod-lists, CPU utilization was up to 384% for the test with 10 concurrent users and R/W split disabled. Average CPU usage did not exceed 13 % for all other modules.
  • Approximately DB CPU usage is up to 99.5%.

Recommendations and Jiras

  • Use database read-write split enabled for mod-lists to improve performance.
  • Increase default CPU allocation for mod-list service up to 4x to 512 from 128.

Results

200k records list refresh for each user.

Number of users

Duration

Test 1

Duration

Test 2

Duration

Test 3

mod-lists R/W split enabled
 1 user13 min 30 sec (1st time after mod-lists restart)4min 33 sec4 min 52 sec
2 users4 min 40 sec5 min4 min 55 sec
5 users6 min-6 min 13 sec6 min 16 sec-6 min 24 sec6min 41 sec
10 users9 min 40 sec - 10 min 10 sec10 min -10 min 40 sec9 min 50 sec-10 min 7 sec
mod-lists R/W split disabled
1 user13 min 23 sec (1st time after mod-lists restart)4 min 30 sec4 min 24 sec
2 users4 min 42 sec5 min 15 sec5 min 19 sec
5 users7 min -7 min 29 sec6 min 55 sec- 7 min 24 sec7 min -7 min 25 sec
10 users10 min 30 sec - 11 min 35 sec 11 min 10 sec- 11 min 40 sec 10 min 45 sec- 11 min 35 sec
mod-lists R/W split disabled + increased CPU to 512 for mod-lists (CPU usage decreased to 84%)
1 user5 min 3 sec (1st time after mod-lists restart)4 min 55 sec5 min
2 users5 min5 min 42 sec 5 min 25 sec
5 users7 min 30 sec- 8 min7 min 10 sec- 7 min 30 sec7 min 10 sec- 7 min 30 sec
10 users10 min -10 min 45 sec10 min 10 sec -11 min10 min 45 sec- 10 min 55 sec

 * - Tests were performed with disabled circulation jobs

Memory Utilization

Memory utilization increasing for mod-lists up to 33% due to previous module restarting and everyday cluster shutdown processes - no memory leak is suspected for all of the modules.


mod-lists

Service CPU Utilization 

For mod-lists, CPU utilization was up to 384% for the test with 10 concurrent users and R/W split disabled. Average CPU usage did not exceed 13 % for all other modules. Each CPU spike corresponds to a separate list refresh.


mod-lists


RDS CPU Utilization 

RDS CPU Utilization was very high. Approximately DB CPU usage is up to 99.5%


RDS Database Connections

DB Load


Long-running queries: 

select id from [tenant]_mod_fqm_manager.drv_item_details where lower(cast(item_status as varchar)) = lower($1) order by item_effective_call_number asc, item_effective_location_name asc, instance_title asc, instance_primary_contributor asc
delete from list_contents where list_id=$1 and refresh_id=$2


Appendix

Infrastructure

Records count :

  • mod_inventory_storage.item = 22130108

PTF -environment ncp5 

  • 12 m6i.2xlarge EC2 instances located in US East (N. Virginia)us-east-1
  • 2 database  instances, one reader, and one writer

    NameAPI NameMemory GIBvCPUsmax_connections
    R6G Extra Largedb.r6g.xlarge32 GiB4 vCPUs2731
  • MSK ptf-kakfa-3
    • 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


Modules memory and CPU parameters

Module
ncp5-pvt
Wed Aug 23 10:38:27 UTC 2023
Task Def. RevisionModule VersionTask CountMem Hard LimitMem Soft limitCPU unitsXmxMetaspaceSizeMaxMetaspaceSizeR/W split enabled
mod-remote-storage14mod-remote-storage:2.0.324920447210243960512512true
mod-codex-mux3mod-codex-mux:2.13.0-SNAPSHOT.1082102489612876888128false
mod-finance-storage9mod-finance-storage:8.4.221024896102470088128false
mod-ncip9mod-ncip:1.13.12102489612876888128false
mod-agreements6mod-agreements:5.5.2215921488128968384512false
mod-ebsconet6mod-ebsconet:2.0.0212481024128700128256false
mod-organizations6mod-organizations:1.7.02102489612870088128false
edge-sip24edge-sip2:3.0.02102489612876888128false
mod-settings6mod-settings:1.0.021024896200000false
mod-data-import9mod-data-import:2.7.11204818442561292384512true
edge-dematic14edge-dematic:2.0.111024896128000false
mod-search8mod-search:2.0.1225922480204814405121024false
mod-inn-reach1mod-inn-reach:3.1.0-SNAPSHOT.4922304204851214405121024false
mod-tags6mod-tags:2.0.12102489612876888128false
mod-authtoken7mod-authtoken:2.13.021440115251292288128true
mod-notify7mod-notify:3.0.02102489612876888128false
mod-inventory-update6mod-inventory-update:3.0.12102489612876888128false
mod-configuration9mod-configuration:5.9.12102489612876888128true
mod-orders-storage6mod-orders-storage:13.5.02102489651270088128false
edge-caiasoft6edge-caiasoft:2.0.021024896128000false
mod-login-saml6mod-login-saml:2.6.22102489612876888128false
mod-erm-usage-harvester7mod-erm-usage-harvester:4.3.12102489612876888128false
mod-password-validator6mod-password-validator:3.0.0214401298128768384512false
mod-licenses6mod-licenses:4.3.12248023121281792384512false
mod-gobi6mod-gobi:2.6.02102489612870088128false
mod-bulk-operations17mod-bulk-operations:1.0.623072260010241536384512false
mod-fqm-manager19mod-fqm-manager:1.0.0-SNAPSHOT.8411300026001282048384512true
mod-graphql6mod-graphql:1.11.02102489612876888128false
mod-finance6mod-finance:4.7.12102489612870088128false
mod-erm-usage7mod-erm-usage:4.5.32102489612876888128false
mod-copycat6mod-copycat:1.4.02102489612876888128false
mod-lists3-4-5mod-lists:1.0.0-SNAPSHOT.1130130002600128/5122048384512false/true
mod-permissions20mod-permissions:6.3.22168415445121024384512true
mod-entities-links7mod-entities-links:1.0.2225922480400144001024false
pub-edge7pub-edge:2023.06.142102489612876800false
mod-codex-inventory3mod-codex-inventory:2.4.0-SNAPSHOT.1392102489612876888128true
mod-orders11mod-orders:12.6.822048144010241024384512false
edge-patron6edge-patron:4.11.02102489625676888128false
edge-ncip6edge-ncip:1.8.12102489612876888128false
mod-users-bl8mod-users-bl:7.5.021440115251292288128false
mod-inventory-storage11mod-inventory-storage:26.0.024096369020483076384512true
mod-invoice6mod-invoice:5.6.521440115251292288128false
mod-user-import6mod-user-import:3.7.22102489612876888128false
mod-sender7mod-sender:1.10.02102489612876888128false
edge-oai-pmh9edge-oai-pmh:2.6.121512136010241440384512false
mod-data-export-worker10mod-data-export-worker:3.0.1323072280010242048384512false
mod-rtac8mod-rtac:3.5.02102489612876888128false
mod-task-list3mod-task-list:1.7.12102489612876888128false
mod-circulation-storage13mod-circulation-storage:16.0.0.1622880259215361814384512false
mod-calendar8mod-calendar:2.4.22102489612876888128false
mod-source-record-storage26mod-source-record-storage:5.6.725600500020483500384512true
mod-event-config6mod-event-config:2.5.02102489612876888128false
mod-courses6mod-courses:1.4.72102489612876888128false
mod-inventory1mod-inventory:20.0.402880259210241814384512false
mod-email6mod-email:1.15.32102489612876888128false
mod-circulation7mod-circulation:23.5.6228802592153676888128false
mod-di-converter-storage6mod-di-converter-storage:2.0.52102489612876888128false
mod-pubsub10mod-pubsub:2.9.12153614401024922384512true
edge-orders6edge-orders:2.8.12102489612876888128false
edge-rtac6edge-rtac:2.6.02102489612876888128false
mod-template-engine6mod-template-engine:1.18.02102489612876888128false
mod-users8mod-users:19.1.12102489612876888128true
mod-patron-blocks11mod-patron-blocks:1.8.021024896102476888128true
mod-audit9mod-audit:2.7.02102489612876888128false
mod-source-record-manager18mod-source-record-manager:3.6.425600500020483500384512false
nginx-edge8nginx-edge:2023.06.1421024896128000false
mod-quick-marc6mod-quick-marc:3.0.01228821761281664384512false
nginx-okapi7nginx-okapi:2023.06.1421024896128000false
okapi-b8okapi:5.0.13168414401024922384512false
mod-feesfines9mod-feesfines:18.2.12102489612876888128true
mod-invoice-storage6mod-invoice-storage:5.6.021872153610241024384512false
mod-codex-ekb3mod-codex-ekb:1.11.0-SNAPSHOT.1412102489612876888128false
mod-service-interaction6mod-service-interaction:2.2.22204818442561290384512false
mod-data-export6mod-data-export:4.7.111024896102476888128false
mod-patron7mod-patron:5.5.22102489612876888128false
mod-oai-pmh10mod-oai-pmh:3.11.324096369020483076384512true
edge-connexion6edge-connexion:1.0.62102489612876888128false
mod-kb-ebsco-java7mod-kb-ebsco-java:3.13.02102489612876888128false
mod-notes6mod-notes:5.0.121024896128952384512false
mod-data-export-spring8mod-data-export-spring:2.0.21204818442561536384512false
mod-organizations-storage7mod-organizations-storage:4.5.12102489612870088128false
mod-login6mod-login:7.9.02144012981024768384512false
pub-okapi7pub-okapi:2023.06.142102489612876800false
mod-data-import-converter-storage4mod-data-import-converter-storage:1.16.0-SNAPSHOT.1322102489612876888128false
mod-eusage-reports7mod-eusage-reports:1.3.02102489612876888128false

Methodology/Approach

To test Baseline for List refresh JMeter scripts were used.

Test preparation: 

  • Background circulation jobs were disabled.
  • 200k items were checked out
  • 10 lists were created with the query: (item_status == "Checked out") to be able to run a test for 10 concurrent users.

Refresh list for 1, 2, 5, and 10 concurrent users tested