Skip to end of banner
Go to start of banner

Data Import MARC BIB + CI/CO (Ramsons) [NON-ECS]

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

Overview In progress

  • This document contains the results of testing Check-in/Check-out and Data Import for MARC Bibliographic records on the Ramsons[ECS] release environment. 

PERF-969 - Getting issue details... STATUS  

Summary

  • Data Import with Check In/Check Out tests finished successfully with PTF - Create 2 and PTF - Updates Success - 2 job profiles with files 5K, 10K, 25K, 50K, 100K records.
  • Comparing with previous testing results Quesnelia and Ramsons releases

Test Runs 

Test №ScenarioTest ConditionsResults

1
DI MARC Bib Create5K, 10K, 25K, 50K, 100K consequentially
Completed
CICO 8 users

2
DI MARC Bib Update5K, 10K, 25K, 50K, 100K consequentially


Completed

CICO8 users

Test Results

This table contains durations for Data Import with Check-in/Check-out

ProfileMARC File

DI Duration

Ramsons

(hh:mm:ss)

Check In, Check Out Response time (8 users)

Ramsons

CI Average msCO Average ms

DI MARC Bib Create

(PTF - Create 2)

5K.mrc0:02:538371.628
10K.mrc0:05:358091.460
25K.mrc0:15:138951.545
50K.mrc0:27:179011.495
100K.mrc1:04:318961.459

DI MARC Bib Update

(PTF - Updates Success - 2)

5K.mrc0:07:259921.767
10K.mrc0:12:521.1001.903
25K.mrc0:37:021.2251.957
50K.mrc1:13:161.2991.957
100K.mrc2:32:251.2972.027

Check-in/Check-out without Data Import

ScenarioLoad levelRequestResponse time, ms
Quesnelia
95 percaverage
Circulation Check-in/Check-out
(without Data import)
8 usersCheck-in767625
Check-out13471138

Comparison

This table contains DI durations with CICO comparison between Quesnelia and Ramsons releases.

ProfileMARC FileDI Duration

DI Delta  
Quesnelia/Ramsons

with CI/CO
(hh:mm:ss)

Check In, Check Out
Response time
(8 users)
Check In, Check Out
Response time
(8 users)
Delta, %

without CI/CO

with CI/COQuesneliaRamsonsQuesnelia/RamsonsQuesnelia/Ramsons
QuesneliaRamsonsQuesneliaRamsonsCI Average secCO Average secCI Average secCO Average secCICO
DI MARC Bib Create (PTF - Create 2)5K.mrc00:03:20
00:02:320:02:530:00:21
+14%
0.6450.9010.8371.628+23%+45%
10K.mrc00:06:00
00:05:030:05:35

0:00:32
+11%

0.6280.9220.8091.460+22%+37%
25K.mrc00:13:41
00:11:580:15:130:03:15
+27%
0.6390.960.8951.545+29%+38%
50K.mrc00:21:59
00:23:290:27:170:03:48
+16%
0.6781.0030.9011.495+25%+33%
100K.mrc00:40:16
00:46:071:04:31

0:18:24
+40%

0.6860.9980.8961.459+23%+32%
DI MARC Bib Update (PTF - Updates Success - 2)5K.mrc00:07:10
00:03:240:07:25

0:04:01
+118%

0.6280.9750.9921.767+37%+45%
10K.mrc00:10:27
00:06:290:12:520:04:01
+98%
0.6641.0181.1001.903+40%+47%
25K.mrc00:23:16
00:16:150:37:020:20:47
+128%
0.7171.0621.2251.957+41%+46%
50K.mrc00:40:52
00:33:331:13:160:39:43
+118%
0.7211.0711.2991.957+44%+45%
100K.mrc01:02:00
01:10:142:32:251:22:11
+117%
0.7391.0811.2972.027+43%+47%

Detailed CICO response time comparison without DI

ScenarioLoad levelRequestResponse time, ms
Ramsons
Response time, ms
Quesnelia
Delta, %
95 percaverage95 percaverageRamsons/Quesnelia
average
Circulation Check-in/Check-out (without Data import)8 usersCheck-in767625609521+19.96%
Check-out1.3471.1381.070803+41.72%

Test №1-2

Resource utilization

 Resource utilization table
CPU RAM 
okapi-b36%mod-oa-b127%
mod-inventory-b5.74%mod-dcb-b64%
mod-source-record-storage-b4.21%mod-inventory-b63%
mod-inventory-storage-b3.67%mod-source-record-storage-b46%
mod-pubsub-b1.20%okapi-b44%
mod-source-record-manager-b1.20%mod-quick-marc-b41%
nginx-okapi0.85%mod-pubsub-b41%
mod-circulation-storage-b0.82%mod-data-import-b41%
mod-users-bl-b0.59%mod-users-b40%
mod-di-converter-storage-b0.57%mod-users-bl-b35%
mod-search-b0.48%mod-entities-links-b35%
mod-quick-marc-b0.43%mod-feesfines-b35%
mod-authtoken-b0.29%mod-di-converter-storage-b33%
mod-circulation-b0.26%mod-source-record-manager-b33%
mod-configuration-b0.16%mod-patron-blocks-b30%
mod-dcb-b0.14%mod-inventory-storage-b30%
mod-feesfines-b0.11%mod-circulation-storage-b30%
mod-entities-links-b0.11%mod-configuration-b29%
mod-patron-blocks-b0.05%mod-patron-b22%
pub-okapi0.05%mod-circulation-b22%
mod-oa-b0.04%mod-authtoken-b21%
mod-data-import-b0.04%edge-patron-b17%
edge-patron-b0.03%nginx-okapi4%
mod-patron-b0.03%pub-okapi4%
pub-edge0.00%pub-edge4%

Response times

 Response times

Service CPU Utilization

Service Memory Utilization

DB CPU Utilization

DB Connections

Kafka metrics

OpenSearch Data Nodes metrics


DB load

                                                                                                                     

Top SQL-queries

Top applications


#TOP SQL statement
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)
#TOP SLOW  SQL statement
1
WITH cte AS (SELECT id,
                    name,
                    name_type_id,
                    authority_id,
                    last_updated_date
             FROM fs09000000_mod_search.contributor
             WHERE last_updated_date > $1
             ORDER BY last_updated_date
             )
SELECT c.id,
       c.name,
       c.name_type_id,
       c.authority_id,
       c.last_updated_date,
       json_agg(
               CASE
                                WHEN sub.instance_count IS NULL THEN NULL
                                ELSE json_build_object(
                       'count', sub.instance_count,
                       'typeId', sub.type_ids,
                       'shared', sub.shared,
                       'tenantId', sub.tenant_id
               )
               END
       ) AS instances
FROM cte c
         LEFT JOIN
     (SELECT cte.id,
             ins.tenant_id,
             ins.shared,
             array_agg(DISTINCT ins.type_id) FILTER (WHERE ins.type_id <> '') AS type_ids,
             count(DISTINCT ins.instance_id)                                  AS instance_count
      FROM fs09000000_mod_search.instance_contributor ins
               INNER JOIN cte
                          ON ins.contributor_id = cte.id
      GROUP BY cte.id,
               ins.tenant_id,
               ins.shared) sub ON c.id = sub.id
GROUP BY c.id,
         c.name,
         c.name_type_id,
         c.authority_id,
         c.last_updated_date
      ORDER BY last_updated_date ASC


Appendix

Infrastructure

PTF -environment rcp1
  • rcp1 5 r7g.2xlarge EC2 instances located in US East (N. Virginia)us-east-1 
  • 1 instance of db.r6g.xlarge database instance: Writer instance
  • MSK fse-test
      • 4 kafka.m7g.xlarge brokers in 2 zones (2 brokers per zone)
      • Apache Kafka version 3.7.x, metadata mode - KRaft

      • EBS storage volume per broker 300 GiB

      • auto.create.topics.enable=true
      • log.retention.minutes=480
      • default.replication.factor=2
      • revision - 26
  • OpenSearch 2.13 ptf-test cluster
    • r6g.2xlarge.search 4 data nodes

    • r6g.large.search 3 dedicated master nodes

DB tables records size:

Tennentinstance countholdings countitem countauthority count
fs0900000030.587.26030.646.07531.734.81816.535.572

Methodology/Approach

DI tests scenario (DI MARC Bib Create and Update) were started on Ramsons (rcp1) env with  file splitting features enabled on a NON-ECS environment.

  • To run CI/CO - Ubuntu AWS instance was used as load generator
  • DI tests were started from UI

Test runs:

  • Test 1: Manually tested 5K, 10K, 25K, 50K, 100K consequentially records files, DI (DI MARC Bib Create ) started on Main tenant (fs09000000), and CICO with 8 users on background.
  • Test 2: Manually tested 5K, 10K, 25K, 50K, 100K consequentially records files, DI (DI MARC Bib Update) started on Main tenant (fs09000000), and CICO with 8 users on background.



  • No labels