[Quesnelia] [non-ECS] Multi-tenants DI

Overview

  • This document contains the results of testing Data Import for MARC Bibliographic records with an update job in the Quesnelia release on qcp1 environments with Kafka consolidated topics and file splitting features enabled on a non-ecs environment.

PERF-818 - Getting issue details... STATUS  

Summary

  • Three tests of DI with update jobs with 25k records were carried out on the qcp1 cluster.
  • Comparing the Quesnelia and Poppy releases, we observed improved DI update job durations in the Quesnelia environment. On average, these durations were 1 minute and 23 seconds shorter for a single tenant and 2 minutes shorter for two and three concurrent tenants in the Quesnelia environment.
  • Memory consumption for mod-data-import was 60%, mod-inventory - 128%. No memory leaks are suspected.
  • CPU utilization for mod-data-import spiked to 70%, mod-inventory - 150%.
  • DB CPU utilization was 93%.
  • DB connections - 1273 on average.

Test Results

ProfileTest #TenantMARC File

DI Duration Quesnelia (hh:mm:ss)

Results

DI MARC Bib Update (PTF - Updates Success - 6)1fs0900000025K.mrc00:15:55Completed
2fs0900000025K.mrc00:17:06Completed
fs0700000125K.mrc00:28:17Completed
3fs0900000025K.mrc00:33:57Completed
fs0700000125K.mrc00:36:07Completed
fs0700000225K.mrc00:41:55
Completed

Comparison

Test #QuesneliaPoppy

DI Delta
per tenant
(hh:mm:ss) Quesnelia /Poppy

DI Delta
per test
(hh:mm:ss) Quesnelia /Poppy
ProfileTenant

DI Duration Quesnelia

per tenant

(hh:mm:ss)

DI Duration Quesnelia

per test

(hh:mm:ss)

Profile

Tenant

DI Duration Poppy (hh:mm:ss)

DI Duration Poppy

per test

(hh:mm:ss)

№1

25K.mrc

DI MARC Bib Update

(PTF - Updates Success - 6)

fs0900000000:15:5500:15:55

DI MARC Bib Update

(PTF - Updates Success - 1)

fso900000000:17:1800:17:18-0:01:23-0:01:23

№2

25K.mrc

fs0900000000:17:0600:45:23fso900000000:23:1100:47:27-0:06:05-0:02:04
fs0700000100:28:17fso700000100:24:16+0:04:01

№3

25K.mrc

fs0900000000:33:571:51:59fso900000000:26:361:54:01+0:07:21-0:02:02
fs0700000100:36:07fso700000100:38:01-0:01:54
fs0700000200:41:55
fso700000200:49:24-0:07:29


Resource utilization for Test #1 and Test #2

 Resource utilization table
CPURAM
mod-inventory-b171%mod-inventory-b87%
mod-di-converter-storage-b83%mod-permissions-b79%
nginx-okapi66%mod-data-import-b60%
mod-source-record-storage-b39%okapi-b58%
okapi-b29%mod-source-record-storage-b48%
mod-inventory-storage-b20%mod-inventory-storage-b44%
mod-source-record-manager-b20%mod-source-record-manager-b43%
mod-permissions-b19%mod-di-converter-storage-b40%
mod-data-import-b1.%nginx-okapi5%
pub-okapi0.2%pub-okapi4.7%

Service CPU Utilization

Here we can see that mod-inventory-b module used 171% CPU, mod-di-converter-storage-b used 83% CPU and nginx-okapi used 66% CPU

Service Memory Utilization

Here we can see that all modules show a stable trend.

DB CPU Utilization

DB CPU in the average was 88%.

DB Connections

DB connections was 1139.

DB load

                                                                                                                     

Top SQL-queries


#TOP 5 SQL statements
1
insert into "marc_records_lb" ("id", "content") values (cast($1 as uuid), cast($2 as jsonb)) on conflict ("id") do update set "content" = cast($3 as jsonb)
2
INSERT INTO fs09000000_mod_source_record_manager.events_processed (handler_id, event_id) VALUES ($1, $2)
3
INSERT INTO fs09000000_mod_source_record_manager.journal_records (id, job_execution_id, source_id, source_record_order, entity_type, entity_id, entity_hrid, action_type, action_status, error, action_date, title, instance_id, holdings_id, order_id, permanent_location_id, tenant_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17)
4
insert into "marc_records_lb" ("id", "content") values (cast($1 as uuid), cast($2 as jsonb)) on conflict ("id") do update set "content" = cast($3 as jsonb)
5
set SEARCH_PATH to 'fs09000000_mod_source_record_manager';
SELECT * FROM get_job_log_entries('b7d9c003-eff8-42a7-8a77-1473defa0a84','source_record_order', 'ASC', 100, 0, false, 'ALL')


Resource utilization for Test #3

 Resource utilization table
CPURAM
mod-di-converter-storage-b137%mod-inventory-b67%
mod-inventory-b117%mod-permissions-b61%
nginx-okapi109%mod-source-record-storage-b45%
mod-data-import-b55%mod-source-record-manager-b44%
okapi-b46%okapi-b38%
mod-source-record-storage-b44%mod-data-import-b36%
mod-source-record-manager-b34%mod-di-converter-storage-b34%
mod-inventory-storage-b20%mod-inventory-storage-b16%
mod-permissions-b18.00%nginx-okapi4%
pub-okapi0.30%pub-okapi4%

Service CPU Utilization

Here we can see that mod-inventory-b module used 140% CPU in average, mod-inventory-b used 117% CPU and nginx-okapi used 109% CPU

Service Memory Utilization

Here we can see that all modules show a stable trend.

DB CPU Utilization

DB CPU was 93%.

DB Connections

DB connections was 1273.

DB load

                                                                                                                     

Top SQL-queries

#TOP 5 SQL statements
1
insert into "marc_records_lb" ("id", "content") values (cast($1 as uuid), cast($2 as jsonb)) on conflict ("id") do update set "content" = cast($3 as jsonb)
2
insert into "marc_records_lb" ("id", "content") values (cast($1 as uuid), cast($2 as jsonb)) on conflict ("id") do update set "content" = cast($3 as jsonb)
3
INSERT INTO fs07000001_mod_source_record_manager.events_processed (handler_id, event_id) VALUES ($1, $2)
4
INSERT INTO fs07000002_mod_source_record_manager.events_processed (handler_id, event_id) VALUES ($1, $2)
5
INSERT INTO fs09000000_mod_source_record_manager.events_processed (handler_id, event_id) VALUES ($1, $2)

Appendix

Infrastructure

PTF - environment Quesnelia (qcp1)

  • 10 db.r6g.xlarge EC2 instances located in US East (N. Virginia)us-east-1
  • 1 database  instances, writer

    NameMemory GIBvCPUs

    db.r6g.xlarge

    32 GiBvCPUs
  • MSK ptf-mobius-testing2
    • 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=2


 Quesnelia modules memory and CPU parameters
ModuleTask Def. Revision

Module Version

Task Count

Mem Hard Limit

Mem Soft limit

CPU units

Xmx

MetaspaceSize

MaxMetaspaceSize

R/W split enabled

qcp1-pvt
Tue Apr 16 14:25:54 UTC 2024
mod-remote-storage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-remote-storage:3.2.024920447210243960512512FALSE
mod-ncip3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-ncip:1.14.42102489612876888128FALSE
mod-finance-storage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-finance-storage:8.6.021024896102470088128FALSE
mod-agreements3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-agreements:7.0.0215921488128000FALSE
mod-ebsconet3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-ebsconet:2.2.0212481024128700128256FALSE
mod-organizations3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-organizations:1.9.02102489612870088128FALSE
mod-consortia2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-consortia:1.1.023072204812820485121024FALSE
edge-sip22579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-sip2:3.2.0-SNAPSHOT.2092102489612876888128FALSE
mod-serials-management3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-serials-management:1.0.02248023121281792384512FALSE
mod-settings3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-settings:1.0.32102489620076888128FALSE
mod-data-import6579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-import:3.1.01204818442561292384512FALSE
edge-dematic3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-dematic:2.2.01102489612876888128FALSE
mod-search3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-search:3.2.0225922480204814405121024FALSE
mod-inn-reach2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inn-reach:3.2.0-SNAPSHOT.86236003240102428805121024FALSE
mod-tags3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-tags:2.2.02102489612876888128FALSE
edge-courses3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-courses:1.4.02102489612876888128FALSE
mod-authtoken3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-authtoken:2.15.121440115251292288128FALSE
mod-inventory-update3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inventory-update:3.3.02102489612876888128FALSE
mod-notify3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-notify:3.2.02102489612876888128FALSE
mod-configuration3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-configuration:5.10.02102489612876888128FALSE
mod-orders-storage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-orders-storage:13.7.02102489651270088128FALSE
edge-caiasoft3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-caiasoft:2.2.02102489612876888128FALSE
mod-login-saml3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-login-saml:2.8.02102489612876888128FALSE
mod-erm-usage-harvester3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-erm-usage-harvester:4.5.02102489612876888128FALSE
mod-licenses3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-licenses:6.0.02248023121281792384512FALSE
mod-gobi3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-gobi:2.8.02102489612870088128FALSE
mod-password-validator3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-password-validator:3.2.0214401298128768384512FALSE
mod-bulk-operations3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-bulk-operations:2.0.023072260010241536384512FALSE
mod-fqm-manager3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-fqm-manager:2.0.12300026001282048384512TRUE
edge-dcb3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-dcb:1.1.02102489612876888128FALSE
mod-graphql4579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-graphql:1.12.12102489612876888128FALSE
mod-finance3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-finance:4.9.02102489612870088128FALSE
mod-erm-usage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-erm-usage:4.7.02102489612876888128FALSE
mod-batch-print4579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-batch-print:1.1.02102489612876888128FALSE
mod-copycat3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-copycat:1.6.02102451212876888128FALSE
mod-lists3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-lists:2.0.02300026001282048384512FALSE
mod-entities-links4579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-entities-links:3.0.0225922480400144001024FALSE
mod-permissions6579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-permissions:6.5.02168415445121024384512FALSE
pub-edge3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/pub-edge:2023.06.142102489612876800FALSE
mod-orders3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-orders:12.8.022048144010241024384512FALSE
edge-patron3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-patron:5.1.02102489625676888128FALSE
edge-ncip3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-ncip:1.9.22102489612876888128FALSE
edge-inn-reach2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-inn-reach:3.1.1-SNAPSHOT.452102489612876888128FALSE
mod-users-bl3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-users-bl:7.7.021440115251292288128FALSE
mod-oa2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-oa:2.1.0-SNAPSHOT.622102489612876888128FALSE
mod-inventory-storage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inventory-storage:27.1.024096369020483076384512FALSE
mod-invoice4579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-invoice:5.8.021440115251292288128FALSE
mod-user-import3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-user-import:3.8.02102489612876888128FALSE
mod-sender4579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-sender:1.12.02102489612876888128FALSE
edge-oai-pmh3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-oai-pmh:2.9.021512136010241440384512FALSE
mod-data-export-worker3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-export-worker:3.2.123072204810242048384512FALSE
mod-rtac3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-rtac:3.6.02102489612876888128FALSE
mod-circulation-storage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-circulation-storage:17.2.022880259215361814384512FALSE
mod-calendar3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-calendar:3.1.02102489612876888128FALSE
mod-source-record-storage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-source-record-storage:5.8.025600500020483500384512FALSE
mod-event-config3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-event-config:2.7.02102489612876888128FALSE
mod-courses3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-courses:1.4.102102489612876888128FALSE
mod-circulation-item3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-circulation-item:1.0.021024896128000FALSE
mod-inventory3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inventory:20.2.022880259210241814384512FALSE
mod-email3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-email:1.17.02102489612876888128FALSE
mod-pubsub3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-pubsub:2.13.02153614401024922384512FALSE
mod-circulation3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-circulation:24.2.022880259215361814384512FALSE
mod-di-converter-storage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-di-converter-storage:2.2.02102489612876888128FALSE
edge-rtac3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-rtac:2.7.12102489612876888128FALSE
edge-orders3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-orders:3.0.02102489612876888128FALSE
mod-users4579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-users:19.3.12102489612876888128FALSE
mod-template-engine3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-template-engine:1.20.02102489612876888128FALSE
mod-patron-blocks3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-patron-blocks:1.10.021024896102476888128FALSE
mod-audit3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-audit:2.9.02102489612876888128FALSE
edge-fqm3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-fqm:2.0.02102489612876888128FALSE
mod-source-record-manager3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-source-record-manager:3.8.025600500020483500384512FALSE
nginx-edge3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/nginx-edge:2023.06.1421024896128000FALSE
mod-quick-marc3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-quick-marc:5.1.01228821761281664384512FALSE
nginx-okapi3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/nginx-okapi:2023.06.1421024896128000FALSE
okapi-b4579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/okapi:5.3.03168414401024922384512FALSE
mod-feesfines3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-feesfines:19.1.02102489612876888128FALSE
mod-invoice-storage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-invoice-storage:5.8.021872153610241024384512FALSE
mod-dcb4579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-dcb:1.1.02102489612876888128FALSE
mod-service-interaction3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-service-interaction:4.0.12204818442561290384512FALSE
mod-data-export8579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-export:5.0.11204815241024000FALSE
mod-patron3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-patron:6.1.02102489612876888128FALSE
mod-oai-pmh3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-oai-pmh:3.13.024096369020483076384512FALSE
edge-connexion3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-connexion:1.2.02102489612876888128FALSE
mod-kb-ebsco-java3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-kb-ebsco-java:4.0.02102489612876888128FALSE
mod-notes3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-notes:5.2.021024896128952384512FALSE
mod-data-export-spring3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-export-spring:3.2.01204818442561536384512FALSE
mod-organizations-storage3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-organizations-storage:4.7.02102489612870088128FALSE
mod-login3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-login:7.11.02144012981024768384512FALSE
pub-okapi3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/pub-okapi:2023.06.142102489612876800FALSE
mod-eusage-reports3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-eusage-reports:2.1.12102489612876888128FALSE


Methodology/Approach

DI tests scenario (DI MARC Bib Update) were started from UI on Quesnelia (qcp1) env with Kafka consolidated topics and file splitting features enabled on a non-ecs-enabled environment..

Test set

  • Test 1: Manually tested 25k records files DI started on one tenant only.
  • Test 2: Manually tested 25k records files DI started on 2 tenants concurrently, step 30%.
  • Test 3: Manually tested 25k records files DI started on 3 tenants concurrently, step 30%.