mod-search: Test Reindexing of Instances on consortium environment (Poppy)

Overview

The purpose of the document is to assess reindexing performance on a consortium environment. Calculate reindex time and size of index.

Recommendations & Jiras

Test Summary

  • Reindexing process for consortium environment takes:
    • 3 hours for 3 tenants in parallel (1.7M instances);
    • 2 hours for central tenant reindexing (1.2M instances);
    • 1 hour for secondary tenant reindexing  (353K instances);
    • 20 minutes for secondary tenant reindexing (202K instances).
  • Duration depends not only on instance number, but also its type (source). cs00000int_0001 tenant has a lot of shared instances (343K) but much less unshared ones (10K) compared to cs00000int_0002 (200K unshared). Data details can be found here: Datastructure
  • High CPU utilization is observed on nginx-okapi module - up to 413% during 3 tenants test.
  • CPU utilization for mod-inventory-storage reached 102% during test on central tenant. mod-search CPU utilization was about 13-27% during all the tests.
  • No memory leaks suspected.

Test Runs /Results

Test #

Instances number

Test Conditions

reindexing on Poppy release, consortium environment

Duration *

Notes


1. 2023-11-28 09:20-12:20 UTC

1766108

In parallel: 3 tenants

3 hours
  • mod-search task count =8
  • mod-inventory-storage task count = 2
  • mod-okapi task count = 3
  • open search instance scaled up to r6g.4xlarge.search
  • without configuration of number_of_replicas and refresh_interval values of ES/OpenSearch

2. 2023-11-29 08:50 - 10:50 UTC

1212927

Sequential: cs00000int

2 hours

3. 2023-11-29 14:05 - 15:05 UTC

353179

Sequential: cs00000int_0001

1 hour
4. 2023-11-2915:22 - 15:42 UTC200002Sequential: cs00000int_000220 min

*Duration depends not only on instance number, but also it's type (source). Data details can be found here: Datastructure

Indexing size

All the data from the tables below were capruted after each test was finished.

In parallel: 3 tenants
healthstatusindexuuidprirepdocs.countdocs.deletedstore.sizepri.store.size
greenopenpcon_instance_subject_cs00000intoo6lG2KjRBm68SlF4cQf-A429554671886133.4gb1.1gb
greenopenpcon_contributor_cs00000intD9izLpcOQWmqZFJhl6kyyA429290452315251.8gb685mb
greenopenpcon_authority_cs00000int5CbWdgFrQSSBRlcNHPk7-A42002.4kb832b
greenopenpcon_instance_cs00000int6i5vkM6kRHOOu4ahRqESkA421422889149823.7gb7.8gb

Results from get-request for reindex monitoring:

TenantReindex idGet request reindex
cs00000int5dfca883-6236-438c-b4a4-bfd2274cdc0b1212891
cs00000int_00186a89e41-2858-4a9c-9e58-578ccf677413353179
cs00000int_00201ec9821-aca8-4a28-8c02-844807191ca9200002

SUM1766072


healthstatusindexuuidprirepdocs.countdocs.deletedstore.sizepri.store.size
Sequential: cs00000int
greenopenpcon_instance_subject_cs00000intXMqrUxTkTNKz4rIS1fi9Ug428624111063003.2gb1gb
greenopenpcon_contributor_cs00000intTGA0HARfRLGXMDuFyQcmfg428355331627921.5gb560.8mb
greenopenpcon_authority_cs00000int5CbWdgFrQSSBRlcNHPk7-A42002.4kb832b
greenopenpcon_instance_cs00000intR_Goc_w2T8CRnfvfbbsxHg421212891025.9gb8.5gb
Sequential: cs00000int_0001
greenopenpcon_instance_subject_cs00000intXMqrUxTkTNKz4rIS1fi9Ug42865366834664.6gb1.5gb
greenopenpcon_contributor_cs00000intTGA0HARfRLGXMDuFyQcmfg42839478903802.3gb806mb
greenopenpcon_authority_cs00000int5CbWdgFrQSSBRlcNHPk7-A42002.4kb832b
greenopenpcon_instance_cs00000intR_Goc_w2T8CRnfvfbbsxHg42122289116158428.5gb9.4gb
Sequential: cs00000int_0002
greenopenpcon_instance_subject_cs00000intXMqrUxTkTNKz4rIS1fi9Ug429554671265344.5gb1.2gb
greenopenpcon_contributor_cs00000intTGA0HARfRLGXMDuFyQcmfg429290451899492.7gb1gb
greenopenpcon_authority_cs00000int5CbWdgFrQSSBRlcNHPk7-A42002.4kb832b
greenopenpcon_instance_cs00000intR_Goc_w2T8CRnfvfbbsxHg42142288916158832.6gb10.9gb

Results from get-request for reindex monitoring:

TenantReindex idGet request reindex
cs00000intbb944cf4-b99f-4aa3-b13e-f5c92dc630ed1212891
cs00000int_001cf943d63-50db-4085-9629-783d7acdc67b353179
cs00000int_002c62e2662-6a21-47fd-9bb8-eea11364c2c1200002

SUM1766072

Service CPU Utilization

Test #1 (3 tenants in parallel)

Maximum CPU utilization:

nginx-okapi - 413%

mod-inventory-storage - 95%

okapi - 73%

mod-search - 27%


Test #2 (cs00000int main tenant, sequential)

Maximum CPU utilization:

nginx-okapi - 332%

mod-inventory-storage - 102%

okapi - 63%

mod-search - 27%


Test #3 and #4 (cs00000int_0001, cs00000int_0002 secondary tenants, sequential)

Maximum CPU utilization:

nginx-okapi - 285%

mod-inventory-storage - 98%

okapi - 63%

mod-search - 13%

Memory Utilization

Test #1 (3 tenants in parallel)

Memory utilization:

mod-search - 38% → 50%

mod-inventory-storage - 11% → 31%


Test #2 (cs00000int main tenant, sequential)

Memory utilization:

mod-search - 37% → 50%

mod-inventory-storage - 13% → 21%


Test #3 and #4 (cs00000int_0001, cs00000int_0002 secondary tenants, sequential)

Memory utilization:

mod-search - 33% → 49%

mod-inventory-storage - 26% → 31%

DB CPU Utilization

Test #1 (3 tenants in parallel)

Maximum DB CPU utilization - 37%


Test #2 (cs00000int main tenant, sequential)

Maximum DB CPU utilization - 56%


Test #3 and #4 (cs00000int_0001, cs00000int_0002 secondary tenants, sequential)

Maximum DB CPU utilization - 36%

DB Connections

Test #1 (3 tenants in parallel)

Test #2 (cs00000int main tenant, sequential)

Test #3 and #4 (cs00000int_0001, cs00000int_0002 secondary tenants, sequential)

Open Search CPU

Test #1 (3 tenants in parallel)

Maximum CPU utilization - 57%


Test #2 (cs00000int main tenant, sequential)

Maximum CPU utilization - 47%


Test #3 and #4 (cs00000int_0001, cs00000int_0002 secondary tenants, sequential)

Maximum CPU utilization - 53%

Open Search Indexing Data Rate

Test #1 (3 tenants in parallel)

Test #2 (cs00000int main tenant, sequental)

Test #3 and #4 (cs00000int_0001, cs00000int_0002 secondary tenants, sequential)

Open Search Indexing Latency

Test #1 (3 tenants in parallel)

Test #2 (cs00000int main tenant, sequential)

Test #3 and #4 (cs00000int_0001, cs00000int_0002 secondary tenants, sequential)

Appendix

Infrastructure

PTF-environment pcon

  • 10 m6g.2xlarge EC2 instances located in US East (N. Virginia)us-east-1 
  • 2 instances of db.r6g.xlarge database instances, one reader and one writer 
  • 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

Data structure

TenantSourceInstance numberInstances sum
cs00000intFOLIO1150351212927
MARC1097892
cs00000int_0001CONSORTIUM-FOLIO38712353179
CONSORTIUM-MARC304467
FOLIO1000
MARC9000
cs00000int_0002CONSORTIUM-MARC4200002
FOLIO30000
MARC169998

Module versions

Module
pcon-pvt
Task Def. RevisionModule VersionTask CountMem Hard LimitMem Soft limitCPU unitsXmxMetaspaceSizeMaxMetaspaceSizeR/W split enabled
mod-remote-storage2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-remote-storage:3.0.024920447110243960512512false
mod-ncip1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-ncip:1.14.12102489612876888128false
mod-finance-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-finance-storage:8.5.021024896102470088128false
mod-agreements1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-agreements:6.0.0215921488128968384512false
mod-ebsconet1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-ebsconet:2.1.0212481024128700128256false
mod-consortia1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-consortia:1.0.02102489612876888128false
edge-sip21579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-sip2:3.1.02102489612876888128false
mod-organizations1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-organizations:1.8.02102489612876888128false
mod-settings1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-settings:1.0.12102489620076888128false
mod-search2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-search:3.0.3225922480204814405121024false
edge-dematic1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-dematic:2.1.01102489612876888128false
mod-data-import1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-import:3.0.01204818442561292384512false
mod-tags1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-tags:2.1.02102489612876888128false
mod-authtoken1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-authtoken:2.14.021440115251292288128false
mod-notify1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-notify:3.1.02102489612876888128false
mod-inventory-update1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inventory-update:3.2.12102489612876888128false
mod-configuration1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-configuration:5.9.22102489612876888128false
mod-orders-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-orders-storage:13.6.02102489651276888128false
edge-caiasoft1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-caiasoft:2.1.02102489612876888128false
mod-login-saml1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-login-saml:2.7.02102489612876888128false
mod-gobi1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-gobi:2.7.02102489612876888128false
mod-password-validator1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-password-validator:3.1.0214401298128768384512false
mod-licenses1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-licenses:5.0.02248023121281792384512false
mod-bulk-operations1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-bulk-operations:1.1.023072260010241536384512false
mod-graphql2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-graphql:1.12.02102489612876888128false
mod-finance1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-finance:4.8.02102489612876888128false
mod-copycat1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-copycat:1.5.02102489612876888128false
mod-entities-links1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-entities-links:2.0.0225922480400144001024false
mod-permissions2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-permissions:6.4.02168415445121024384512false
pub-edge2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/pub-edge:2023.06.142102489612876800false
mod-orders1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-orders:12.7.022048144010241024384512false
edge-patron1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-patron:5.0.02102489625676888128false
edge-ncip1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-ncip:1.9.02102489612876888128false
mod-users-bl1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-users-bl:7.6.021440115251292288128false
mod-inventory-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inventory-storage:27.0.024096369020483076384512false
mod-invoice1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-invoice:5.7.021440115251292288128false
mod-user-import1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-user-import:3.8.02102489612876888128false
mod-sender1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-sender:1.11.02102489612876888128false
edge-oai-pmh1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-oai-pmh:2.7.021512136010241440384512false
mod-data-export-worker1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-export-worker:3.1.023072280010242048384512false
mod-rtac1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-rtac:3.5.02102489612876888128false
mod-circulation-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-circulation-storage:17.1.022880259215361814384512false
mod-source-record-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-source-record-storage:5.7.025600500020483500384512false
mod-calendar1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-calendar:2.5.02102489612876888128false
mod-event-config1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-event-config:2.6.02102489612876888128false
mod-courses1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-courses:1.4.82102489612876888128false
mod-inventory1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inventory:20.1.022880259210241814384512false
mod-email1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-email:1.16.02102489612876888128false
mod-di-converter-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-di-converter-storage:2.1.02102489612876888128false
mod-pubsub1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-pubsub:2.11.02153614401024922384512false
mod-circulation1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-circulation:24.0.022880259215361814384512false
edge-orders1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-orders:2.9.02102489612876888128false
edge-rtac1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-rtac:2.6.02102489612876888128false
mod-template-engine1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-template-engine:1.19.12102489612876888128false
mod-users2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-users:19.2.02102489612876888128false
mod-patron-blocks1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-patron-blocks:1.9.021024896102476888128false
mod-audit1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-audit:2.8.02102489612876888128false
mod-source-record-manager1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-source-record-manager:3.7.025600500020483500384512false
nginx-edge2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/nginx-edge:2023.06.1421024896128000false
mod-quick-marc1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-quick-marc:5.0.01228821761281664384512false
nginx-okapi2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/nginx-okapi:2023.06.1421024896128000false
okapi-b2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/okapi:5.1.13168414401024922384512false
mod-feesfines1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-feesfines:19.0.02102489612876888128false
mod-invoice-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-invoice-storage:5.7.021872153610241024384512false
mod-service-interaction1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-service-interaction:3.0.02204818442561290384512false
mod-patron1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-patron:6.0.02102489612876888128false
mod-data-export1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-export:4.8.011024896102476888128false
mod-oai-pmh1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-oai-pmh:3.12.024096369020483076384512false
edge-connexion1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-connexion:1.1.02102489612876888128false
mod-kb-ebsco-java1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-kb-ebsco-java:4.0.02102489612876888128false
mod-notes1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-notes:5.1.021024896128952384512false
mod-organizations-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-organizations-storage:4.6.02102489612876888128false
mod-login1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-login:7.10.12144012981024768384512false
mod-data-export-spring2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-export-spring:3.0.01204818442561536384512false
pub-okapi2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/pub-okapi:2023.06.142102489612876800false

Methodology/Approach

  • Use consortium cluster for testing (pcon in our case).
  • Configure the environment in accordance with Infrastructure parameters to the one that FSE commonly uses.
  • Run reindex, get the results for indexing time, index size. Use Steps for testing process#Reindex for details.
  • Compare results.