PTF - Data Import Update multi tenant (Quesnelia) [ECS]

Overview

  • This document contains the results of testing  Data Import for MARC Bibliographic records with an update job on the Quesnelia [ECS] release on qcon environment. 

PERF-841 - Getting issue details... STATUS  

Summary

  • Data Import tests finished successfully on qcon environment using the PTF - Updates Success - 2 profile and file with 25k records.
  • Comparing with previous testing results Poppy and Quesnelia releases
    • Data Import processed all jobs including test on 3 tenants concurrently without errors for Quesnelia releases.
    • Data Import durations stayed in the same time range in Average for Quesnelia releases but it works stable and without errors.
  • During testing, we noticed that mod-permission did not have any spikes and used 12% CPU for Quesnelia releases. For Poppy releases we had error.

Test Results and Test Runs

This table contains durations for Data Import. 

ProfileTest #TenantMARC FileDI Duration Quesnelia
(hh:mm:ss)
Results
DI MARC Bib Update (PTF - Updates Success - 2)1

College
(cs00000int_0001)

25K.mrc0:17:43Completed
2College
(cs00000int_0001)
25K.mrc0:26:04Completed
Professional 
(cs00000int_0002)
25K.mrc0:25:50Completed
3College
(cs00000int_0001)
25K.mrc0:26:46Completed
Professional 
(cs00000int_0002)
25K.mrc0:38:06Completed
School
(cs00000int_0003)
25K.mrc0:37:29Completed

Comparison

This table contains durations comparison between Poppy and Quesnelia releases.

Profile MARC File Test run # DI DurationDI Delta
(hh:mm:ss) 
Poppy Quesnelia
DI MARC Bib Update (PTF - Updates Success - 2)  25K.mrc  10:17:180:17:43+00:00:25
+2.41%
20:56:410:51:54-00:04:47
-8.44%
31:33:48
with errors*
1:42:21+00:08:33
+9.12%


Resource utilization for Test Set

 Resource utilization table
CPURAM
mod-inventory-b125%mod-inventory-b67%
mod-di-converter-storage-b69%mod-data-import-b55%
nginx-okapi64%mod-source-record-storage-b50%
okapi-b41%mod-source-record-manager-b45%
mod-inventory-storage-b29%mod-di-converter-storage-b34%
mod-source-record-storage-b24%okapi-b31%
mod-source-record-manager-b12%mod-inventory-storage-b15%
mod-data-import-b1.80%nginx-okapi4.60%
pub-okapi0.20%pub-okapi4.40%

Service CPU Utilization

Here we can see that mod-inventory used 125% CPU, mod-di-converter-storage and nginx-okapi used 65%-70% CPU.

Service Memory Utilization

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

DB CPU Utilization

DB CPU was 95%.

DB Connections

Max number of DB connections was 1650.

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 cs00000int_0001_mod_source_record_manager.events_processed (handler_id, event_id) VALUES ($1, $2)
3
 INSERT INTO cs00000int_mod_search.consortium_instance (tenant_id, instance_id, json, created_date, updated_date)
  VALUES ($1, $2, $3::json, $4, $5)
  ON CONFLICT (tenant_id, instance_id)
  DO UPDATE SET json = EXCLUDED.json, updated_date = EXCLUDED.updated_date
4
WITH deleted_rows AS 
( delete from marc_indexers mi where exists( select 1 from marc_records_tracking mrt
where mrt.is_dirty = true and mrt.marc_id = mi.marc_id and mrt.version > mi.version )
returning mi.marc_id), deleted_rows2 AS ( delete from marc_indexers mi
where exists( select 1 from records_lb where records_lb.id = mi.marc_id and records_lb.state = 'OLD' )
returning mi.marc_id) INSERT INTO marc_indexers_deleted_ids SELECT DISTINCT marc_id FROM deleted_rows UNION SELECT marc_id FROM deleted_rows2
5
INSERT INTO cs00000int_0002_mod_source_record_manager.events_processed (handler_id, event_id) VALUES ($1, $2)

Appendix

Infrastructure

PTF - environment Quesnelia (qcon)

  • 11 m6i.2xlarge EC2 instances located in US East (N. Virginia)us-east-1 [Number of ECS instances, instance type, location region]

  • 1 instance of db.r6.xlarge database instance: Writer instance

  • OpenSearch

    • domain: fse

    • Data nodes Instance type: r6g.xlarge.search
    • Number of nodes: 9

    • Version: OpenSearch_2_7_R20240502

  • MSK - tenat

    • 4 kafka.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

    • Kafka consolidated topics enabled


 Quesnelia modules memory and CPU parameters
ModuleTask Def. RevisionModule VersionTask CountMem Hard LimitMem Soft limitCPU unitsXmxMetaspaceSizeMaxMetaspaceSize
qcon-pvt








Thu May 23 10:47:25 UTC 2024








mod-remote-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-remote-storage:3.2.024920447210243960512512
mod-finance-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-finance-storage:8.6.021024896102470088128
mod-ncip1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-ncip:1.14.42102489612876888128
mod-agreements1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-agreements:7.0.0215921488128000
mod-ebsconet1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-ebsconet:2.2.0212481024128700128256
mod-consortia1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-consortia:1.1.023072204812820485121024
mod-organizations1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-organizations:1.9.02102489612870088128
mod-serials-management1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-serials-management:1.0.02248023121281792384512
mod-settings1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-settings:1.0.32102489620076888128
mod-search9579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-search:3.3.0-SNAPSHOT.224225922480204814405121024
edge-dematic1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-dematic:2.2.01102489612876888128
mod-data-import1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-import:3.1.01204818442561292384512
mod-tags1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-tags:2.2.02102489612876888128
mod-authtoken3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-authtoken:2.15.121440115251292288128
edge-courses1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-courses:1.4.02102489612876888128
mod-inventory-update1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inventory-update:3.3.02102489612876888128
mod-notify1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-notify:3.2.02102489612876888128
mod-configuration1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-configuration:5.10.02102489612876888128
mod-orders-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-orders-storage:13.7.02102489651270088128
edge-caiasoft1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-caiasoft:2.2.02102489612876888128
mod-login-saml1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-login-saml:2.8.02102489612876888128
mod-erm-usage-harvester1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-erm-usage-harvester:4.5.02102489612876888128
mod-password-validator1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-password-validator:3.2.0214401298128768384512
mod-licenses1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-licenses:6.0.02248023121281792384512
mod-gobi1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-gobi:2.8.02102489612870088128
mod-bulk-operations1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-bulk-operations:2.0.023072260010241536384512
mod-fqm-manager1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-fqm-manager:2.0.12300026001282048384512
edge-dcb1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-dcb:1.1.02102489612876888128
mod-graphql1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-graphql:1.12.12102489612876888128
mod-finance1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-finance:4.9.02102489612870088128
mod-erm-usage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-erm-usage:4.7.02102489612876888128
mod-batch-print1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-batch-print:1.1.02102489612876888128
mod-copycat1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-copycat:1.6.02102451212876888128
mod-lists1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-lists:2.0.02300026001282048384512
mod-entities-links1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-entities-links:3.0.0225922480400144001024
mod-permissions2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-permissions:6.5.02168415445121024384512
pub-edge1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/pub-edge:2023.06.142102489612876800
mod-orders1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-orders:12.8.022048144010241024384512
edge-patron1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-patron:5.1.02102489625676888128
edge-ncip1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-ncip:1.9.22102489612876888128
mod-users-bl1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-users-bl:7.7.021440115251292288128
mod-invoice1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-invoice:5.8.021440115251292288128
mod-inventory-storage2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inventory-storage:27.2.0-SNAPSHOT.73824096369020483076384512
mod-user-import1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-user-import:3.8.02102489612876888128
mod-sender1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-sender:1.12.02102489612876888128
edge-oai-pmh1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-oai-pmh:2.9.021512136010241440384512
mod-data-export-worker1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-export-worker:3.2.123072204810242048384512
mod-rtac1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-rtac:3.6.02102489612876888128
mod-circulation-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-circulation-storage:17.2.022880259215361814384512
mod-source-record-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-source-record-storage:5.8.025600500020483500384512
mod-calendar1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-calendar:3.1.02102489612876888128
mod-event-config1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-event-config:2.7.02102489612876888128
mod-courses1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-courses:1.4.102102489612876888128
mod-circulation-item1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-circulation-item:1.0.021024896128000
mod-inventory3579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-inventory:20.2.022880259210241814384512
mod-email1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-email:1.17.02102489612876888128
mod-circulation2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-circulation:24.2.122880259215361814384512
mod-pubsub1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-pubsub:2.13.02153614401024922384512
mod-di-converter-storage2579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-di-converter-storage:2.2.22102489612876888128
edge-orders1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-orders:3.0.02102489612876888128
edge-rtac1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-rtac:2.7.12102489612876888128
mod-users1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-users:19.3.12102489612876888128
mod-template-engine1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-template-engine:1.20.02102489612876888128
mod-patron-blocks1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-patron-blocks:1.10.021024896102476888128
mod-audit1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-audit:2.9.02102489612876888128
edge-fqm1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-fqm:2.0.02102489612876888128
mod-source-record-manager1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-source-record-manager:3.8.025600500020483500384512
nginx-edge1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/nginx-edge:2023.06.1421024896128000
mod-quick-marc1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-quick-marc:5.1.01228821761281664384512
nginx-okapi1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/nginx-okapi:2023.06.1421024896128000
okapi-b1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/okapi:5.3.03168414401024922384512
mod-feesfines1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-feesfines:19.1.02102489612876888128
mod-invoice-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-invoice-storage:5.8.021872153610241024384512
mod-service-interaction1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-service-interaction:4.0.12204818442561290384512
mod-dcb1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-dcb:1.1.02102489612876888128
mod-patron1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-patron:6.1.02102489612876888128
mod-data-export1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-export:5.0.01204815241024000
mod-oai-pmh1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-oai-pmh:3.13.024096369020483076384512
edge-connexion1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/edge-connexion:1.2.02102489612876888128
mod-notes1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-notes:5.2.021024896128952384512
mod-kb-ebsco-java1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-kb-ebsco-java:4.0.02102489612876888128
mod-login1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-login:7.11.02144012981024768384512
mod-organizations-storage1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-organizations-storage:4.7.02102489612870088128
mod-data-export-spring1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-data-export-spring:3.2.01204818442561536384512
pub-okapi1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/pub-okapi:2023.06.142102489612876800
mod-eusage-reports1579891902283.dkr.ecr.us-east-1.amazonaws.com/folio/mod-eusage-reports:2.1.12102489612876888128


Methodology/Approach

DI tests scenario(DI MARC Bib Update) were started from UI.

Test set:

  • Test 1: Manually tested 25k records files DI started on College tenant(cs00000int_0001) only.
  • Test 2: Manually tested 25k records files DI started on College tenant(cs00000int_0001) and Professional tenant(cs00000int_0002) concurrently, step 30%.
  • Test 3: Manually tested 25k records files DI started on College tenant(cs00000int_0001), Professional tenant(cs00000int_0002) and School tenant(cs00000int_0003) concurrently, step 30%.

To get status and time range for import jobs the query used: 

SQL Query
select file_name,started_date,completed_date, completed_date - started_date as duration ,status
from cs00000int_0001_mod_source_record_manager.job_execution order by started_date desc limit 1000;

select file_name,started_date,completed_date, completed_date - started_date as duration ,status
from cs00000int_0002_mod_source_record_manager.job_execution order by started_date desc limit 1000;

select file_name,started_date,completed_date, completed_date - started_date as duration ,status
from cs00000int_0003_mod_source_record_manager.job_execution order by started_date desc limit 1000;