/
PTF - Export deleted MARC authority records (Ramsons) [ECS]

PTF - Export deleted MARC authority records (Ramsons) [ECS]

Test status: PASSED

Overview

Summary

  • All tests are passed successfully.

  • SLA (duration of export should be less than a minute) met.

  • Test duration is faster in 100K test for more than 50% in Ramsons compared to Quesnelia

  • for 300K tests, performance is more or less the same, however average api response time is better

  • No memory leaks or spikes found

  • CPU usage showed stable trend. Most used module is mod-entities-links.

  • DB CPU usage is low for 100K tests (around 6%) and 15%-17% for 300K tests. For tests with additional load (tests with 10 loops of JMeter scrip) it’s 15-17% for 100K and 25-30% for 300K.

 

Test Runs/Results 

Each test run got additional rerun to ensure of performance consistency. Moreover tests 3,4,7,8 was performed to check system behaviour under additional load. This tests are “fast“ so additional tests was performed to get more information about system behaviour. (tests with 10 loops of JMeter script), Named in table (10 times)

Test #

Test Conditions

Duration 

Test #

Test Conditions

Duration 

1

100K

8s 652 ms

2

100K (rerun)

8s 440 ms

3

100K (10 times )

7s 860 ms (avg)

4

100K (10 times )

7s 591 ms (avg)

5

300K

29s 567 ms

6

300K

29s 989 ms

7

300K (10 times )

29s 579 ms (avg)

8

300K (10 times )

28s 393 ms (avg)

Comparisons

Tests duration was compared to same tests in Quesnelia release PTF - Export deleted MARC authority records (Quesnelia) [ECS]

In overall - performance is better by more than 50% for 100K tests and the same for 300K test.

 

Test

Ramsons

Quesnelia

Test

Ramsons

Quesnelia

 

Duration (s/ ms)

GET_authority-storage/authorities response time (ms)

Duration (s/ ms)

GET_authority-storage/authorities response time (ms)

100K

8s 652 ms

178 ms

13s 317 ms

262 ms

300K

29s 989 ms

216 ms

29s 109 ms

288 ms

Memory Utilization

Memory showed stable trend without visible signs of memory leaks or anomalies. Most used module is mod-entities-links and it consumes 32% memory in average during whole testing set. Please look on memory trend to all related modules in chart below.

 

image-20241107-111906.png

Note: Taking into account that tests durations are less then a minute - in order to show trend, all tests included into chart. Below - table with top 3 modules

 

Module

Ramsons Avg

Quesnelia Avg

Module

Ramsons Avg

Quesnelia Avg

mod-entities-links

32%

37%

okapi

32%

-

mod-users

25%

-

CPU Utilization 

In 100K and 300K tests CPU usage is barely visible because of fast test duration that’s why additional tests was performed (100K x10 and 300K x 10, basically same tests but 10 times one after another without pauses) to see if there are anomalies sudden spices, etc.. CPU usage stabilise on ±3%. CPU usage spiked only on mod-entities-links (as obvious), okapi, nginx-okapi and supportive services like mod-users-bl, mod-login, mod-authtoken.

No unexpected spikes or anomalies observed.

 

image-20241107-111434.png

 

Note: Instance-level CPU usage is not included into this report as on instance scale CPU usage during this tests is not visible.

RDS CPU Utilization 

RDS CPU usage is almost invisible during 100K tests (CPU utilization was ±6% and have no difference from IDLE state of DB), however with 10X for 300K deleted Authority records, tests it’s visible that CPU reached ±30%.

 

image-20241108-093417.png

 

On database connections chart it’s no visible signs of tests, probably because the only module created connections to DB during that time was mod-entities-links.

image-20241108-095601.png

Note: No slow queries defined in logs and in performance insights.

Errors

No errors found during tests. All tests passed successfully all response codes and responses checked to be valid.

Appendix

Infrastructure

PTF -environment rcon

  • 11 m6g.2xlarge EC2 instances located in US East (N. Virginia)us-east-1

  • 1 instance of db.r6.xlarge database, writer. Standard fse configuration

  • MSK fse-tenant

    • Metadata mode: KRaft

    • 4 kafka.m7g.xlarge brokers in 2 zones

    • Apache Kafka version 3.7.x

    • EBS storage volume per broker 300 GiB

    • auto.create.topics.enable=true

    • log.retention.minutes=480

    • default.replication.factor=2

  • Open Search ptf-test cluster

    • r6g.2xlarge.search 4 data nodes

    • r6g.large.search 3 dedicated master nodes

 

Cluster Resources - rcon-pvt (Fri Nov 08 10:35:52 UTC 2024

Module

Task Definition Revision

Module Version

Mem Hard Limit

Mem Soft Limit

CPU Units

Xmx

Metaspace Size

Max Metaspace Size

 

Module

Task Definition Revision

Module Version

Mem Hard Limit

Mem Soft Limit

CPU Units

Xmx

Metaspace Size

Max Metaspace Size

 

mod-remote-storage

2

mod-remote-storage:3.2.1-SNAPSHOT.171

 

4920

4472

0

3960

512

512

mod-finance-storage

2

mod-finance-storage:8.7.0-SNAPSHOT.183

1024

896

0

700

88

128

 

mod-ncip

2

mod-ncip:1.14.6-SNAPSHOT.233

1024

896

0

768

88

128

 

mod-agreements

2

mod-agreements:7.1.0-SNAPSHOT.237

1592

1488

0

0

0

0

 

mod-ebsconet

2

mod-ebsconet:2.3.0-SNAPSHOT.80

1248

1024

0

700

128

256

 

mod-organizations

2

mod-organizations:2.0.0-SNAPSHOT.95

1024

896

0

700

88

128

 

mod-consortia

2

mod-consortia:1.2.0-SNAPSHOT.22

5136

4776

0

4416

384

512

 

edge-sip2

2

edge-sip2:3.3.0-SNAPSHOT.264

1024

896

0

768

88

128

 

mod-serials-management

2

mod-serials-management:1.1.0-SNAPSHOT.46

2480

2312

0

1792

384

512

 

mod-settings

2

mod-settings:1.0.4-SNAPSHOT.67

1024

896

0

768

88

128

 

mod-data-import

2

mod-data-import:3.2.0-SNAPSHOT.189

2048

1844

0

1292

384

512

 

mod-search

8

mod-search:4.0.0-SNAPSHOT.281

2592

2480

2048

0

512

1024

 

edge-dematic

2

edge-dematic:2.3.0-SNAPSHOT.143

1024

896

0

768

88

128

 

mod-inn-reach

2

mod-inn-reach:3.2.1-SNAPSHOT.102

3600

3240

0

2880

512

1024

 

mod-record-specifications

2

mod-record-specifications:1.0.0-SNAPSHOT.4

1024

896

0

768

88

128

 

mod-tags

2

mod-tags:2.2.1-SNAPSHOT.138

1024

896

0

768

88

128

 

mod-authtoken

3

mod-authtoken:2.16.0-SNAPSHOT.303

1440

1152

0

922

88

128

 

edge-courses

2

edge-courses:1.5.0-SNAPSHOT.1160

1024

896

0

768

88

128

 

mod-notify

2

mod-notify:3.2.1-SNAPSHOT.268

1024

896

0

768

88

128

 

mod-inventory-update

2

mod-inventory-update:3.4.2-SNAPSHOT.100

1024

896

0

768

88

128

 

mod-configuration

2

mod-configuration:5.11.0-SNAPSHOT.355

1024

896

0

768

88

128

 

mod-orders-storage

2

mod-orders-storage:13.8.0-SNAPSHOT.245

1024

896

0

700

88

128

 

edge-caiasoft

2

edge-caiasoft:2.3.0-SNAPSHOT.105

1024

896

0

768

88

128

 

mod-login-saml

2

mod-login-saml:2.9.0-SNAPSHOT.291

1024

896

0

768

88

128

 

mod-erm-usage-harvester

2

mod-erm-usage-harvester:5.0.0-SNAPSHOT.133

1024

896

0

768

88

128

 

mod-gobi

2

mod-gobi:2.9.0-SNAPSHOT.259

1024

896

0

700

88

128

 

mod-licenses

2

mod-licenses:6.1.0-SNAPSHOT.163

2480

2312

0

1792

384

512

 

mod-password-validator

2

mod-password-validator:3.2.2-SNAPSHOT.149

1440

1298

0

768

384

512

 

edge-dcb

3

edge-dcb:1.2.0-SNAPSHOT.39

1024

896

0

768

88

128

 

mod-bulk-operations

2

mod-bulk-operations:2.1.0-SNAPSHOT.119

3072

2600

0

1536

384

512

 

mod-fqm-manager

2

mod-fqm-manager:2.1.0-SNAPSHOT.1189

3000

2600

0

768

88

128

 

mod-graphql

2

mod-graphql:1.12.1.412

1024

896

0

768

88

128

 

mod-finance

2

mod-finance:5.0.0-SNAPSHOT.174

1024

896

0

700

88

128

 

mod-erm-usage

2

mod-erm-usage:5.0.0-SNAPSHOT.109

2800

2550

0

1800

384

512

 

mod-batch-print

2

mod-batch-print:1.2.0-SNAPSHOT.15

1024

896

0

768

88

128

 

mod-tlr

2

mod-tlr:1.0.0-SNAPSHOT.8

1024

896

0

768

88

128

 

mod-lists

2

mod-lists:2.1.0-SNAPSHOT.1303

3000

2600

0

2048

384

512

 

mod-copycat

2

mod-copycat:1.6.1-SNAPSHOT.208

1024

512

0

768

88

128

 

mod-entities-links

5

mod-entities-links:3.1.0-SNAPSHOT.113

2592

2480

0

1440

0

1024

 

mod-permissions

3

mod-permissions:6.6.0-SNAPSHOT.386

1684

1544

0

1024

384

512

 

pub-edge

2

pub-edge:2023.06.14

1024

896

0

768

0

0

 

mod-orders

2

mod-orders:12.9.0-SNAPSHOT.401

2048

1740

0

1024

384

512

 

edge-patron

2

edge-patron:5.2.0-SNAPSHOT.174

1024

896

0

768

88

128

 

mod-marc-migrations

11

mod-marc-migrations:1.0.0-SNAPSHOT.8

1024

896

0

768

88

128

 

edge-ncip

3

edge-ncip:1.10.2-SNAPSHOT.116

1024

896

0

768

88

128

 

edge-inn-reach

3

edge-inn-reach:3.3.0-SNAPSHOT.69

1024

896

0

768

88

128

 

mod-users-bl

2

mod-users-bl:7.9.0-SNAPSHOT.318

1440

1152

0

922

88

128

 

mod-oa

2

mod-oa:2.1.0-SNAPSHOT.66

1024

896

0

768

88

128

 

mod-inventory-storage

3

mod-inventory-storage:27.2.0-SNAPSHOT.773

4096

3690

0

3076

512

1024

 

mod-invoice

2

mod-invoice:5.9.0-SNAPSHOT.205

1440

1152

0

922

88

128

 

mod-user-import

2

mod-user-import:3.9.0-SNAPSHOT.197

1024

896

0

768

88

128

 

mod-sender

2

mod-sender:1.12.1-SNAPSHOT.100

1024

896

0

768

88

128

 

edge-oai-pmh

2

edge-oai-pmh:2.10.0-SNAPSHOT.174

1512

1360

0

1440

384

512

 

mod-data-export-worker

3

mod-data-export-worker:3.3.0-SNAPSHOT.233

3072

2048

0

2048

384

512

 

mod-rtac

2

mod-rtac:3.7.0-SNAPSHOT.203

1024

896

0

768

88

128

 

mod-circulation-storage

2

mod-circulation-storage:17.3.0-SNAPSHOT.412

2880

2592

0

1814

384

512

 

mod-source-record-storage

3

mod-source-record-storage:5.9.0-SNAPSHOT.405

5600

5000

0

3500

384

512

 

mod-calendar

2

mod-calendar:3.2.0-SNAPSHOT.229

1024

896

0

768

88

128

 

mod-event-config

2

mod-event-config:2.7.2-SNAPSHOT.110

1024

896

0

768

88

128

 

mod-courses

3

mod-courses:1.4.11-SNAPSHOT.155

1024

896

0

768

88

128

 

mod-circulation-item

2

mod-circulation-item:1.0.1-SNAPSHOT.26

1024

896

0

0

0

0

 

mod-inventory

2

mod-inventory:20.3.0-SNAPSHOT.546

2880

2592

0

1814

384

512

 

mod-email

2

mod-email:1.17.1-SNAPSHOT.128

2800

2550

0

1800

384

512

 

mod-requests-mediated

2

mod-requests-mediated:1.0.0-SNAPSHOT.4

1024

896

0

768

88

128

 

mod-circulation

2

mod-circulation:24.3.0-SNAPSHOT.685

2880

2592

0

1814

384

512

 

mod-pubsub

2

mod-pubsub:2.15.0-SNAPSHOT.224

1536

1440

0

922

384

512

 

mod-di-converter-storage

2

mod-di-converter-storage:2.3.0-SNAPSHOT.124

1024

896

0

768

88

128

 

edge-rtac

2

edge-rtac:2.7.3-SNAPSHOT.234

1024

896

0

768

88

128

 

edge-orders

2

edge-orders:3.1.0-SNAPSHOT.156

1024

896

0

768

88

128

 

mod-users

2

mod-users:19.3.3-SNAPSHOT.702

1024

896

0

768

88

128

 

mod-template-engine

2

mod-template-engine:1.20.1-SNAPSHOT.118

1024

896

0

768

88

128

 

mod-patron-blocks

2

mod-patron-blocks:1.11.0-SNAPSHOT.163

1024

896

0

768

88

128

 

mod-audit

2

mod-audit:2.9.1-SNAPSHOT.216

1024

896

0

768

88

128

 

edge-fqm

3

edge-fqm:2.1.0-SNAPSHOT.100

1024

896

0

768

88

128

 

mod-source-record-manager

2

mod-source-record-manager:3.9.0-SNAPSHOT.353

5600

5000

0

3500

384

512

 

nginx-edge

2

nginx-edge:2023.06.14

1024

896

0

0

0

0

 

mod-quick-marc

2

mod-quick-marc:5.2.0-SNAPSHOT.153

2288

2176

0

1664

384

512

 

nginx-okapi

2

nginx-okapi:2023.06.14

1024

896

0

0

0

0

 

okapi-b

2

okapi:5.3.0

1684

1440

0

922

384

512

 

mod-feesfines

2

mod-feesfines:19.2.0-SNAPSHOT.198

1024

896

0

768

88

128

 

mod-invoice-storage

2

mod-invoice-storage:5.9.0-SNAPSHOT.138

1872

1536

0

1024

384

512

 

mod-reading-room

2

mod-reading-room:1.0.0-SNAPSHOT.12

1024

896

0

768

88

128

 

mod-dcb

2

mod-dcb:1.1.3-SNAPSHOT.40

1024

896

0

768

88

128

 

mod-service-interaction

2

mod-service-interaction:4.1.0-SNAPSHOT.126

2048

1844

0

1290

384

512

 

mod-patron

2

mod-patron:6.2.0-SNAPSHOT.165

1024

896

0

768

88

128

 

mod-data-export

5

mod-data-export:5.1.0-SNAPSHOT.240

2592

2480

0

1440

88

1024

 

mod-oai-pmh

2

mod-oai-pmh:3.14.0-SNAPSHOT.402

4096

3690

0

3076

384

512

 

edge-connexion

2

edge-connexion:1.4.0-SNAPSHOT.88

1024

896

0

768

88

128

 

mod-notes

2

mod-notes:5.3.0-SNAPSHOT.325

1024

896

0

952

384

512

 

mod-kb-ebsco-java

3

mod-kb-ebsco-java:4.2.0-SNAPSHOT.178

1024

896

0

768

88

128

 

mod-organizations-storage

2

mod-organizations-storage:4.8.0-SNAPSHOT.133

1024

896

0

700

88

128

 

mod-data-export-spring

2

mod-data-export-spring:3.3.1-SNAPSHOT.167

2048

1844

0

1536

384

512

 

mod-login

2

mod-login:7.12.0-SNAPSHOT.326

1440

1298

0

768

384

512

 

pub-okapi

2

pub-okapi:2023.06.14

1024

896

0

768

0

0

 

mod-eusage-reports

2

mod-eusage-reports:3.0.0-SNAPSHOT.73

1024

896

0

768

88

128

 

 

Ramsons release snapshot.

Dataset Size 12 M Authority records in mod-entities-links, 100K and 300 K prepared data set of deleted authority records

Methodology/Approach

Overview: starting from Orchid release Authority records is stored in mod-entities-links schema in DB. There are tables [tenant]_mod_entities_links.authority where all authority records is stored and [tenant]_mod_entities_links.authority_archive - where deleted authority records is stored.

In order to prepare data set (generating some number of deleted Authority records) Additional sql script was created:

DO $$ DECLARE num_records_to_move INT := [specify number of records here]; -- Change this to the desired number of records BEGIN -- Step 1: Insert random records from authority to authority_archive with 'deleted' set to true INSERT INTO [tenant]_mod_entities_links.authority_archive ( id, natural_id, source_file_id, source, heading, heading_type, _version, subject_heading_code, sft_headings, saft_headings, identifiers, notes, deleted, created_date, updated_date, created_by_user_id, updated_by_user_id ) SELECT id, natural_id, source_file_id, source, heading, heading_type, _version, subject_heading_code, sft_headings, saft_headings, identifiers, notes, true AS deleted, created_date, updated_date, created_by_user_id, updated_by_user_id FROM [tenant]_mod_entities_links.authority WHERE id NOT IN (SELECT id FROM [tenant]_mod_entities_links.authority_archive) -- Exclude existing IDs ORDER BY random() -- Select random records LIMIT num_records_to_move; END $$;

 

Note: to run this script, just copy it into PGAdmin (or another DB management tool), replace [tenant] with exact tenant id, replace [specify number of records here] with number of records to be deleted and execute it. Script above will “move“ records from authority table to authority_archive without deleting, so script is harmless do dataset and may be executed multiple times.

JMeter script designed to call in loop [GET] authority-storage/authorities endpoint with parameters: limit, deleted, offset. On each step of a loop offset parameter is changing - providing pagination by 2000 records as requested in ticket.

Preparation and execution steps:

  1. Run SQL script in order to generate deleted Authority records. Check number of records that already existing in authority_archive beforehand.

  2. Put JMeter script into load generator. As [GET] authority-storage/authorities endpoint is fast, latency is crucial here, so script can’t be executed from local machine.

  3. Execute JMeter script with needed configurations. Example:

    jmeter -n -t RCON_Export_Deleted_Records.jmx -l export_authority300K_1loop.jtl  -Jloops=1 -Jcount_of_records_in_db=300000

Analysis:

  1. Collect JMeter results. [GET] authority-storage/authorities avg response times and TC_Export Deleted Records transaction controller duration.

  2. Collect CPU, Memory, usage stats for workflow related modules: mod-entities-links, okapi, nginx-okapi, pub-okapi, mod-users, mod-authtoken, mod-login.

  3. Collect DB stats (CPU, connection)

  4. This test is “fast“ so additional tests was performed to get more information about system behaviour. (tests with 10 loops of JMeter script)

Test Artifacts

 

Related content