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