/
Check-in-check-out Test Report (Ramsons) [ECS]

Check-in-check-out Test Report (Ramsons) [ECS]


Test status: PASSED

Overview In progress

  • Regression testing of Check-In/Check-Out (CI/CO) fixed load tests on okapi based environment in Ramsons ECS release.
  • The purposes of CI/CO testing:
    • To define response times of transaction controllers for Check-In and Check-Out
    • To define the response times for requests that take longer than 100 milliseconds

    • To find any trends for resource utilization and recommend improvements
    • To check how system behaves over extended period during longevity test
    • Compare results (current and previous)

Summary

  • Common results:
    • Check-in/Check-out flows degraded 25% in average for all tests except longevity test.
  • Tests #1, #2, #3, #4
    • Check-in - minimum 556 ms with 30 vUsers and maximum 659 ms with 75 vUsers.
    • Check-out - minimum 1120 ms with 30 vUsers and maximum 1483 ms with 75 vUsers. 
  • Test #5
    • Check-in - 493 ms with 30 vUsers 
    • Check-out - 1095 ms with 30 vUsers. 
  • Comparison with Quesnelia results:
    • CI/CO response times degradation (Tests #1, #2, #3, #4): 
      • Test,#vUsersCheck-Out Controller (CO)Check-In Controller (CI)
        127%24%
        220 26%27%
        330 25%28%
        475 26%20%
    • CI/CO response times (test #5 - longevity test):
      • 30 vUsers - 13% improved in CO  and 8% degraded in CI flow.

Resources

  • CPU utilization
    • CPU utilization depends on number of concurrent virtual users and increasing accordingly. Top used modules: okapi, mod-pubsub, mod-inventory, mod-inventory-storage, mod-circulation, mod-users, mod-authtoken, nginx-okapi.
    • During 75 vUsers test nginx-okapi module spiked from 1% to 12% during ramp-up period after 40 vUsers point.
  • Memory consumption
    • Memory consumption of mod-pubsub module grow during test #4 75 vUsers test. It can be connected to saturation point after increased load. The highest usage was at 65%.
    • Mod-pubsub grew during longevity test. The highest usage was at 81%.
    • Top 5 modules, consumption at % in 75 vUsers test:

      mod-oa-b75.86
      mod-pubsub-b69.12
      mod-dcb-b62.23
      mod-inventory-b61.29
      mod-data-import-b54.28
  • RDS CPU utilization average
    • 8 vUsers - 15%, 20 vUsers - 26%, 30 vUsers - 32%, 75 vUsers - 54% During longevity test CPU was 30% in average.
    • If to compare with results in Quesnelia - database utilized 20% more resources during tests #1, #2, #3, #4 and the same consumption during #5 (longevity test).
  • CPU (User) usage by broker
    • 8 vUsers - 12%, 20 vUsers - 13%, 30 vUsers - 14%, 75 vUsers - 17%. During Longevity test - 2 brokers - 17%, 2 other brokers - 28%.

Recommendations & Jiras

  • mod-serials-management-b affect DB connection growth 200 connection in average. Disabling this module do not affect response times or error rate but significantly decrease DB connection number.
  • Investigate mod-pubsub module memory growing trend. Check errors during successful 30 vUsers test in Error block.

Test Runs 

The following table contains  tests configuration information

Test #

vUsersRamp-up, sec

Duration, sec 

1

8802700
2202002700
3303002700
4757502700
53030086400

Results

Errors:

  • Error messages: 

    Error messages
    All error messages during successful CICO test with 30 vUsers test
    /mod-inn-reach/
    org.springframework.dao.InvalidDataAccessResourceUsageException: JDBC exception executing SQL [select ti1_0.id,ti1_0.created_by_userid,ti1_0.created_by_username,ti1_0.created_date,ti1_0.tenant_id,ti1_0.updated_by_userid,ti1_0.updated_by_username,ti1_0.updated_date from tenant_info ti1_0] [ERROR: relation "tenant_info" does not exist
    
    11:39:54 [] [] [] [] ERROR $LoggingErrorHandler Unexpected error occurred in scheduled task
    
    /mod-pubsub
    11:38:54 [] [] [] [] INFO RestUtil Response received with statusCode 40311:38:54 [] [] [] [] INFO aConsumerServiceImpl Delivering for event with ID 1622f66a-16eb-4720-801e-b12f5c83f812 was complete. Checking for response...11:38:54 [] [] [] [] ERROR aConsumerServiceImpl Error delivering ITEM_CHECKED_OUT event with id '1622f66a-16eb-4720-801e-b12f5c83f812' to /automated-patron-blocks/handlers/item-checked-out, response status code is 403, Forbidden
    11:38:54 [] [] [] [] INFO Cache Cache:: Access token removed for tenant [tenant]
    
    mod-authtoken/
    11:38:54 [198107/automated-patron-blocks] [[tenant]] [] [mod-authtoken] ERROR FilterApi Permission missing in ["audit.pub-sub-handlers.log-record-event.post","remote-storage.pub-sub-handlers.log-record-event.post","pubsub.events.post"] (user permissions) and [] (module permissions). Access for user 'pub-sub' (94e1e5ca-64d1-4cfb-8a3b-6d5269500f48) requires permission: patron-blocks.handlers.item-checked-out.post
    
    12:35:46 [414235/metadata-provider] [[tenant]] [] [mod-authtoken] ERROR Api Token missing, access requires permission: metadata-provider.jobExecutions.collection.get

Response time

The table contains results of Check-in, Check-out tests in Ramsons release. 

Test #1, #2, #3, #4

 Graph (Response times) Test #1


 Graph (Response times) Test #2


 Graph (Response times) Test #3


Errors here connected to a short time connectivity problem during 30 seconds. Additional run for 30 vUsers didn't reveal this connectivity problem.

 Graph (Response times) Test #4


8 vUsers  (test #1)20 vUsers  (test #2)30 vUsers  (test #3)75 vUsers  (test #4)
Requests

Response Times (ms)

 Response Times (ms) Response Times (ms) Response Times (ms)
Label#Samples95th pctAverage#Samples95th pctAverage#Samples95th pctAverage#Samples95th pctAverage
Check-Out Controller1713145011532605132711232380127811201405818231483
Check-In Controller129583859019437065591804737556105381044659
POST_circulation/check-out-by-barcode (Submit_barcode_checkout)17125033402604450324238141132014060643393
POST_circulation/check-in-by-barcode (Submit_barcode_checkin)12974522981939386274179638326910563588304
GET_circulation/loans (Submit_patron_barcode)17152561922603238188238023218814069412237
GET_circulation/loans (Submit_barcode_checkout)17122631912604235189238624719014060369233
GET_inventory/items (Submit_barcode_checkout)








14060136175

Test #5

 Graph (Response times) Test #5


 30 vUsers Longevity test


Requests
Samples, Response Times (ms)
Label#Samples95th pctAverage
Check-Out Controller5532913111095
Check-In Controller41677621493
POST_circulation/check-out-by-barcode (Submit_barcode_checkout)55327394312
POST_circulation/check-in-by-barcode (Submit_barcode_checkin)41678310216
GET_circulation/loans (Submit_patron_barcode)55329226184
GET_circulation/loans (Submit_barcode_checkout)55327227185
GET_inventory/items (Submit_barcode_checkout)553297454

Comparisons

This table has comparison between average values of response times of Ramsons and Quesnelia releases


8 vUsers   (test #1)20 vUsers   (test #2)30 vUsers   (test #3)75 vUsers   (test #4)
RequestsResponse Times, milliseconds

QuesneliaRamsons

QuesneliaRamsons

QuesneliaRamsons

QuesneliaRamsons

LabelAverageDelta,msDifference,%AverageDelta,msDifference,%AverageDelta,msDifference,%AverageDelta,msDifference,%
Check-Out Controller910115324326.70%893112323025.76%899112022124.58%1176148330726.11%
Check-In Controller47659011423.95%44155911826.76%43555612127.82%54665911320.70%

Comparison of longevity test

30 vUsers Longevity  (test #5)
Response Times, milliseconds

QuesneliaRamsons

AverageAverageDelta,msDifference,%
12581095-163-12.96%
458493357.64%


API requests where response times >= 100 milliseconds

API

75 vUsers  Ramsons

Average, ms

POST_circulation/check-out-by-barcode (Submit_barcode_checkout)400
POST_circulation/check-in-by-barcode (Submit_barcode_checkin)285
GET_circulation/loans (Submit_patron_barcode)243
GET_circulation/loans (Submit_barcode_checkout)242
GET_inventory/items (Submit_barcode_checkout)136

Resources Utilization

CPU Utilization

CPU utilization depends on number of concurrent virtual users and increasing accordingly. Top used modules: okapi, mod-pubsub, mod-inventory, mod-inventory-storage, mod-circulation, mod-users, mod-authtoken, nginx-okapi.
For exact numbers use the chart below.

 CPU utilization by modules
CPU8 vUsersCPU20 vUsersCPU30 vUsersCPU75 vUsersCPU30 vUsers Longevity
mod-pubsub-b3.14okapi-b4.8okapi-b6.65nginx-okapi12.94okapi-b5.61
okapi-b2.19mod-pubsub-b3.48mod-pubsub-b3.6okapi-b11.85mod-pubsub-b3.61
mod-inventory-b1.34mod-inventory-storage-b1.73mod-inventory-storage-b2.34mod-inventory-storage-b5.65mod-inventory-b2.08
mod-inventory-storage-b0.82mod-inventory-b1.62mod-inventory-b1.71mod-pubsub-b4.15mod-inventory-storage-b2.01
mod-users-b0.42mod-authtoken-b0.86mod-circulation-b1.16mod-circulation-b2.36mod-circulation-b1.06
mod-authtoken-b0.42mod-users-b0.86mod-users-b1.12mod-authtoken-b2.3mod-users-b0.96
mod-circulation-b0.4mod-circulation-b0.82mod-authtoken-b1.1mod-inventory-b2.11nginx-okapi0.89
mod-search-b0.38nginx-okapi0.74nginx-okapi1.08mod-users-b2.04mod-authtoken-b0.86
mod-source-record-storage-b0.37mod-circulation-storage-b0.66mod-circulation-storage-b0.83mod-circulation-storage-b1.6mod-circulation-storage-b0.78
mod-circulation-storage-b0.35mod-configuration-b0.42mod-configuration-b0.62mod-configuration-b1.04mod-configuration-b0.54
nginx-okapi0.32mod-search-b0.38mod-search-b0.57mod-feesfines-b0.95mod-search-b0.42
mod-configuration-b0.23mod-source-record-storage-b0.38mod-feesfines-b0.42mod-search-b0.62mod-feesfines-b0.36
mod-source-record-manager-b0.16mod-feesfines-b0.3mod-source-record-storage-b0.37pub-okapi0.59mod-source-record-storage-b0.32
mod-feesfines-b0.14pub-okapi0.17pub-okapi0.25mod-source-record-storage-b0.38pub-okapi0.2
mod-quick-marc-b0.12mod-source-record-manager-b0.15mod-dcb-b0.16mod-patron-blocks-b0.23mod-source-record-manager-b0.17
mod-dcb-b0.12mod-dcb-b0.13mod-source-record-manager-b0.15mod-source-record-manager-b0.15mod-quick-marc-b0.13
mod-entities-links-b0.1mod-patron-blocks-b0.11mod-patron-blocks-b0.12mod-dcb-b0.14mod-dcb-b0.13
mod-patron-blocks-b0.07mod-quick-marc-b0.11mod-quick-marc-b0.11mod-quick-marc-b0.11mod-entities-links-b0.12
pub-okapi0.07mod-entities-links-b0.1mod-entities-links-b0.1mod-entities-links-b0.1mod-patron-blocks-b0.12
mod-oa-b0.04mod-users-bl-b0.05mod-users-bl-b0.04mod-patron-b0.05mod-data-import-b0.04
mod-di-converter-storage-b0.04mod-oa-b0.04mod-oa-b0.04mod-users-bl-b0.04mod-users-bl-b0.04
mod-data-import-b0.04mod-data-import-b0.04mod-patron-b0.04mod-oa-b0.04mod-di-converter-storage-b0.04
mod-users-bl-b0.04mod-di-converter-storage-b0.04mod-data-import-b0.04mod-data-import-b0.04mod-oa-b0.04
mod-patron-b0.04mod-patron-b0.04mod-di-converter-storage-b0.04mod-di-converter-storage-b0.04edge-patron-b0.03
edge-patron-b0.03edge-patron-b0.03edge-patron-b0.04edge-patron-b0.04mod-patron-b0.03
pub-edge0pub-edge0pub-edge0pub-edge0pub-edge0

Tests #1, #2, #3, #4

After applying CPU parameter = 0 in container revisions we can see a relative resource utilization by modules only


Test #5


Memory Consumption

 Memory usage by modules. Tests #4 and #5 
Memory 75 vUsersMemory 30 vUsers Longevity
mod-oa-b75.86mod-oa-b78.68
mod-pubsub-b69.12mod-pubsub-b73.82
mod-dcb-b62.23mod-dcb-b62.17
mod-inventory-b61.29okapi-b46.64
mod-data-import-b54.28mod-inventory-b46.27
okapi-b47.74mod-users-b42.83
mod-users-b43.42mod-quick-marc-b36.04
mod-search-b38.35mod-search-b35.4
mod-source-record-storage-b36.89mod-feesfines-b35.18
mod-feesfines-b35.1mod-entities-links-b31.35
mod-quick-marc-b32.22mod-configuration-b30.88
mod-patron-blocks-b31.64mod-data-import-b30.86
mod-users-bl-b30.7mod-patron-blocks-b30.36
mod-configuration-b30.62mod-source-record-storage-b28.07
mod-circulation-b26.72mod-circulation-storage-b27.43
mod-inventory-storage-b26.15mod-circulation-b26.81
mod-entities-links-b26.11mod-inventory-storage-b26.14
mod-circulation-storage-b25.83mod-di-converter-storage-b24.95
mod-di-converter-storage-b24.81mod-patron-b22.56
mod-patron-b22.86mod-authtoken-b21.31
mod-authtoken-b21.87mod-users-bl-b18.56
mod-source-record-manager-b19.16edge-patron-b17.24
edge-patron-b16.24mod-source-record-manager-b13.47
nginx-okapi5.21pub-okapi4.91
pub-okapi5.08nginx-okapi4.85
pub-edge4.41pub-edge4.46

Tests #1, #2, #3, #4

Memory consumption of mod-pubsub module grow during test #4 75 vUsers test. It can be connected to saturation point after increased load. The highest usage was at 65%.


Test #5 

Mod-pubsub grew during longevity test. The highest usage was at 81%.


RDS CPU Utilization

RDS CPU utilized:

8 vUsers - 15%, 20 vUsers - 26%, 30 vUsers - 32%, 75 vUsers - 54% During longevity test CPU was 30% in average. If to compare with results in Quesnelia - database utilized 20% more resources during tests #1, #2, #3, #4 and the same consumption during #5 (longevity test).

Tests #1, #2, #3, #4

Test #5

RDS Database Connections

For 45 minute and longevity tests RDS used max 1250 connections.

Tests #1, #2, #3, #4

Test #5

CPU (User) usage by broker

8 vUsers - 12%, 20 vUsers - 13%, 30 vUsers - 14%, 75 vUsers - 17%. During Longevity test - 2 brokers - 17%, 2 other brokers - 28%.

Tests #1, #2, #3, #4

Test #5

Database load

Load by sqls (AAS) - SQL statements
Tests #1, #2, #3, #4
INSERT INTO [tenant]_mod_pubsub.audit_message (id, event_id, event_type, tenant_id, audit_date, state, published_by, correlation_id, created_by, error_message) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);
UPDATE [tenant]_mod_login.auth_attempts SET jsonb = $1::jsonb WHERE id='d2c9e2ce-3bd2-4cc8-a7f4-e0015de548d0'
SELECT [tenant]_mod_inventory_storage.count_estimate('SELECT jsonb,id FROM [tenant]_mod_inventory_storage.service_point WHERE ((true) AND ( (get_tsvector(f_unaccent(service_point.jsonb->>''ecsRequestRouting'')) @@ tsquery_phrase(f_unaccent(''true''))) IS NOT TRUE)) AND (id=''650b2d28-dc05-4177-9dc3-c45316fe5aa6'')')
INSERT INTO [tenant]_mod_authtoken.refresh_tokens (id, user_id, is_revoked, expires_at) VALUES ($1, $2, $3, $4)
UPDATE [tenant]_mod_inventory_storage.item SET jsonb=$1 WHERE id=$2 RETURNING jsonb::text

Test #5
INSERT INTO [tenant]_mod_pubsub.audit_message (id, event_id, event_type, tenant_id, audit_date, state, published_by, correlation_id, created_by, error_message) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);
SELECT [tenant]_mod_users.count_estimate('SELECT jsonb,id FROM [tenant]_mod_users.users WHERE lower(f_unaccent(users.jsonb->>''username'')) LIKE lower(f_unaccent(''pub-sub''))')

During 45 minute tests (#1, #2, #3, #4) we see that the top sql -INSERT INTO [tenant]_mod_pubsub.audit_message

During longevity test (#5) INSERT INTO [tenant]_mod_pubsub.audit_message - 41 ms and SELECT [tenant]_mod_inventory_storage.count_estimate - 107 ms.

Tests #1, #2, #3, #4


Test #5

Appendix

Infrastructure

PTF -environment rcon
  • rcon 12 m6g.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 table records size:

  • [tenant]
    • instances -            1163924
    • items -                  2091901
    • holding records - 1348036

Modules

 All modules
Cluster Resources - rcon-pvt (Fri Jan 17 14:41:06 UTC 2025)




















ModuleTask Definition RevisionModule VersionTask CountMem Hard LimitMem Soft LimitCPU UnitsXmxMetaspace SizeMax Metaspace SizeR/W Split Enabled
mod-remote-storage8mod-remote-storage:3.3.324920447203960512512FALSE
mod-finance-storage7mod-finance-storage:8.7.321024896070088128FALSE
mod-ncip7mod-ncip:1.15.621024896076888128FALSE
mod-agreements8mod-agreements:7.1.42159214880000FALSE
mod-ebsconet8mod-ebsconet:2.3.12124810240700128256FALSE
mod-organizations7mod-organizations:2.0.021024896070088128FALSE
mod-consortia10mod-consortia:1.2.2251364776020485121024FALSE
edge-sip27edge-sip2:3.3.121024896076888128FALSE
mod-serials-management8mod-serials-management:1.1.222480231201792384512FALSE
mod-settings7mod-settings:1.1.021024896076888128FALSE
mod-data-import10mod-data-import:3.2.412048184401292384512FALSE
mod-search18mod-search:4.0.7225922480014405121024FALSE
edge-dematic7edge-dematic:2.3.111024896076888128FALSE
mod-inn-reach4mod-inn-reach:3.2.1-SNAPSHOT.102236003240028805121024FALSE
mod-record-specifications7mod-record-specifications:1.0.221024896076888128FALSE
mod-tags7mod-tags:2.3.021024896076888128FALSE
mod-authtoken9mod-authtoken:2.16.1214401152092288128FALSE
edge-courses8edge-courses:1.5.121024896076888128FALSE
mod-notify7mod-notify:3.3.021024896076888128FALSE
mod-inventory-update7mod-inventory-update:4.0.021024896076888128FALSE
mod-configuration7mod-configuration:5.11.021024896076888128FALSE
mod-orders-storage7mod-orders-storage:13.8.321024896070088128FALSE
edge-caiasoft7edge-caiasoft:2.3.221024896076888128FALSE
mod-login-saml7mod-login-saml:2.9.321024896076888128FALSE
mod-erm-usage-harvester7mod-erm-usage-harvester:5.0.121024896076888128FALSE
mod-gobi7mod-gobi:2.9.021024896070088128FALSE
mod-licenses7mod-licenses:6.1.222480231201792384512FALSE
mod-password-validator7mod-password-validator:3.3.02144012980768384512FALSE
edge-dcb8edge-dcb:1.2.121024896076888128FALSE
mod-bulk-operations8mod-bulk-operations:2.1.823072260001536384512FALSE
mod-fqm-manager10mod-fqm-manager:3.0.7230002600076888128FALSE
mod-graphql9mod-graphql:1.13.121024896076888128FALSE
mod-finance8mod-finance:5.0.121024896070088128FALSE
mod-erm-usage7mod-erm-usage:5.0.022800255001800384512FALSE
mod-batch-print7mod-batch-print:1.2.021024896076888128FALSE
mod-tlr4mod-tlr:1.0.0-SNAPSHOT.821024896076888128FALSE
mod-lists12mod-lists:3.0.5260002600076888128FALSE
mod-copycat7mod-copycat:1.7.021024512076888128FALSE
mod-entities-links11mod-entities-links:3.1.32259224800144001024FALSE
mod-permissions13mod-permissions:6.6.12168415445121024384512FALSE
pub-edge7pub-edge:2023.06.1421024896076800FALSE
mod-orders9mod-orders:12.9.922048174001024384512FALSE
edge-patron8edge-patron:5.2.121024896076888128FALSE
mod-marc-migrations26mod-marc-migrations:1.0.021024896076888128FALSE
edge-ncip8edge-ncip:1.10.121024896076888128FALSE
edge-inn-reach5edge-inn-reach:3.3.0-SNAPSHOT.6921024896076888128FALSE
mod-users-bl7mod-users-bl:7.9.3214401152092288128FALSE
mod-oa4mod-oa:2.1.0-SNAPSHOT.6621024896076888128FALSE
mod-inventory-storage12mod-inventory-storage:28.0.4240963690030765121024FALSE
mod-invoice8mod-invoice:5.9.2214401152092288128FALSE
mod-user-import7mod-user-import:3.9.021024896076888128FALSE
mod-sender7mod-sender:1.13.021024896076888128FALSE
edge-oai-pmh7edge-oai-pmh:2.10.021512136001440384512FALSE
mod-data-export-worker10mod-data-export-worker:3.3.623072204802048384512FALSE
mod-rtac7mod-rtac:3.7.021024896076888128FALSE
mod-circulation-storage8mod-circulation-storage:17.3.322880259201814384512FALSE
mod-source-record-storage13mod-source-record-storage:5.9.525600500003500384512FALSE
mod-calendar7mod-calendar:3.2.021024896076888128FALSE
mod-event-config7mod-event-config:2.8.021024896076888128FALSE
mod-courses8mod-courses:1.4.1121024896076888128FALSE
mod-circulation-item7mod-circulation-item:1.1.0210248960000FALSE
mod-inventory9mod-inventory:21.0.522880259201814384512FALSE
mod-email8mod-email:1.18.122800255001800384512FALSE
mod-requests-mediated4mod-requests-mediated:1.0.0-SNAPSHOT.421024896076888128FALSE
mod-circulation8mod-circulation:24.3.822880259201814384512FALSE
mod-pubsub8mod-pubsub:2.15.32153614400922384512FALSE
mod-di-converter-storage9mod-di-converter-storage:2.3.121024896076888128FALSE
edge-rtac7edge-rtac:2.8.021024896076888128FALSE
edge-orders7edge-orders:3.1.021024896076888128FALSE
mod-users8mod-users:19.4.521024896076888128FALSE
mod-template-engine7mod-template-engine:1.21.021024896076888128FALSE
mod-patron-blocks7mod-patron-blocks:1.11.121024896076888128FALSE
mod-audit8mod-audit:2.10.221024896076888128FALSE
edge-fqm9edge-fqm:3.0.221024896076888128FALSE
mod-source-record-manager8mod-source-record-manager:3.9.525600500003500384512FALSE
nginx-edge7nginx-edge:2023.06.14210248960000FALSE
mod-quick-marc7mod-quick-marc:6.0.012288217601664384512FALSE
nginx-okapi7nginx-okapi:2023.06.14210248960000FALSE
okapi-b8okapi:6.1.13168414401024922384512FALSE
mod-feesfines7mod-feesfines:19.2.121024896076888128FALSE
mod-invoice-storage7mod-invoice-storage:5.9.121872153601024384512FALSE
mod-reading-room7mod-reading-room:1.0.021024896076888128FALSE
mod-dcb8mod-dcb:1.2.421024896076888128FALSE
mod-service-interaction7mod-service-interaction:4.1.122048184401290384512FALSE
mod-patron8mod-patron:6.2.521024896076888128FALSE
mod-data-export13mod-data-export:5.1.51204818440000FALSE
mod-oai-pmh7mod-oai-pmh:3.14.324096369003076384512FALSE
edge-connexion7edge-connexion:1.3.121024896076888128FALSE
mod-notes7mod-notes:6.0.0210248960952384512FALSE
mod-kb-ebsco-java8mod-kb-ebsco-java:5.0.021024896076888128FALSE
mod-organizations-storage7mod-organizations-storage:4.8.121024896070088128FALSE
mod-data-export-spring8mod-data-export-spring:3.4.312048184401536384512FALSE
mod-login7mod-login:7.12.12144012980768384512FALSE
pub-okapi7pub-okapi:2023.06.1421024896076800FALSE
edge-erm5edge-erm:1.3.021024896076888128FALSE
mod-eusage-reports7mod-eusage-reports:3.0.021024896076888128FALSE


Methodology/Approach

Description

Testing includes data preparation step and testing itself

  • Data preparation for each test takes up to 20 minutes and consists of truncating involved in testing tables, populating data and updating statuses of items.
  • Test itself depends on duration and virtual users number creating necessary load.

In Ramsons token expiration set to 10 minutes by default so to run any tests use new login implementation from the script. Pay attention to Backend Listener. Replace value of application parameter to make the results visible in Grafana dashboard.

Module configuration recommended setup

Update revision in source-record-storage module to exclude every 30 minutes SQL statements - delete rows in marc_indexers (miWITH deleted_rows

{
"name": "srs.marcIndexers.delete.interval.seconds",
"value": "86400"
},

Update mod-serials module. Set number of task with 0 to exclude significant database connection growth.

DB trigger setup in Ramsons

Usual PTF CI/CO data preparation script won’t work in Ramsons. To solve that disable trigger updatecompleteupdateddate_item_insert_update before data preparation for the tenant and enable it before test start.

The sql file was updated to do that step from the script.

Data preparation

  • To prepare data establish connection by AWS key
  • Run CICO_db_preparation.sh script located in /scripts folder. Before use the file tenats.csv to edit the list of tenants to restore the database.
  • Files location: Buckets/fse-ptf/Scripts/CICO/Ramsons/

To start test from AWS instance (load generator) use template for the command. Test locally before start.

 8 vUsers - 
nohup jmeter -n -t /home/ptf/testdata/RCON/PERF-983_CICO/circulation_checkInCheckOut_rcon.jmx -l rcon_8vusers.jtl -e -o /home/ptf/testdata/RCON/PERF-983_CICO/results/8vusers -JGlobal_duration=2700 -JVUSERS=8 -JRAMP_UP=80


20vUsers - 
nohup jmeter -n -t /home/ptf/testdata/RCON/PERF-983_CICO/circulation_checkInCheckOut_rcon.jmx -l rcon_20vusers.jtl -e -o /home/ptf/testdata/RCON/PERF-983_CICO/results/20vusers -JGlobal_duration=2700 -JVUSERS=20 -JRAMP_UP=200


30vUsers - 
nohup jmeter -n -t /home/ptf/testdata/RCON/PERF-983_CICO/circulation_checkInCheckOut_rcon.jmx -l rcon_30vusers.jtl -e -o /home/ptf/testdata/RCON/PERF-983_CICO/results/30vusers -JGlobal_duration=2700 -JVUSERS=30 -JRAMP_UP=300


75vUsers - 
nohup jmeter -n -t /home/ptf/testdata/RCON/PERF-983_CICO/circulation_checkInCheckOut_rcon.jmx -l rcon_75vusers.jtl -e -o /home/ptf/testdata/RCON/PERF-983_CICO/results/75vusers -JGlobal_duration=2700 -JVUSERS=75 -JRAMP_UP=750

30vUsers - longevity
nohup jmeter -n -t /home/ptf/testdata/RCON/PERF-983_CICO/circulation_checkInCheckOut_rcon.jmx -l rcon_30vusers_long.jtl -e -o /home/ptf/testdata/RCON/PERF-983_CICO/results/30vusers_long -JGlobal_duration=86400 -JVUSERS=30 -JRAMP_UP=300


Test CI/CO with 8, 20, 30, 75 concurrent users for 45 minutes each. 

Test CI/CO with 30 users for 24 hours to detect any trends in memory. 

To create widgets in AWS dashboard to monitor and collect CI/CO related modules parameters (service CPU and Memory) use these json:

 CPU and Memory widget jsons
JSON widgets to monitor service CPU consumption
{
"metrics": [
[ "AWS/ECS", "CPUUtilization", "ServiceName", "pub-edge", "ClusterName", "rcp1-pvt", { "region": "us-east-1" } ],
[ "...", "mod-eusage-reports-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-pubsub-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-data-export-spring-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-data-import-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-rtac-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-users-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-organizations-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-graphql-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-event-config-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-audit-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-organizations-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-tags-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-ncip-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-feesfines-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-user-import-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "pub-okapi", ".", ".", { "region": "us-east-1" } ],
[ "...", "okapi-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-entities-links-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-sender-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "nginx-okapi", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-circulation-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-kb-ebsco-java-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-dcb-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-dematic-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-oai-pmh-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-inventory-update-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-search-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-orders-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-orders-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-invoice-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-circulation-item-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-batch-print-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-sip2-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-inventory-storage-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-licenses-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "nginx-edge", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-invoice-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-login-saml-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-agreements-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-di-converter-storage-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-erm-usage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-copycat-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-courses-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-oa-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-email-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-serials-management-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-patron-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-permissions-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-gobi-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-configuration-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-calendar-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-patron-blocks-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-fqm-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-service-interaction-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-circulation-storage-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-caiasoft-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-finance-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-authtoken-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-connexion-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-ncip-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-notes-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-bulk-operations-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-oai-pmh-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-erm-usage-harvester-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-settings-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-notify-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-source-record-storage-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-quick-marc-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-login-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-inventory-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-rtac-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-inn-reach-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-lists-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-finance-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-password-validator-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-orders-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-fqm-manager-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-dcb-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-source-record-manager-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-users-bl-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-template-engine-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-courses-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-patron-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-ebsconet-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-data-export-worker-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-remote-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-inn-reach-b", ".", ".", { "region": "us-east-1", "visible": false } ]
],
"view": "timeSeries",
"period": 60,
"yAxis": {
"left": {
"min": 0
}
},
"stacked": false,
"title": "CI/CO Service CPU Utilization",
"region": "us-east-1",
"stat": "Average"
}
JSON widgets to monitor service Memory consumption
{
"metrics": [
[ "AWS/ECS", "MemoryUtilization", "ServiceName", "pub-edge", "ClusterName", "rcp1-pvt", { "region": "us-east-1" } ],
[ "...", "mod-eusage-reports-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-pubsub-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-data-export-spring-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-data-import-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-rtac-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-users-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-organizations-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-graphql-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-event-config-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-audit-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-organizations-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-tags-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-ncip-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-feesfines-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-user-import-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "pub-okapi", ".", ".", { "region": "us-east-1" } ],
[ "...", "okapi-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-entities-links-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-sender-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "nginx-okapi", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-circulation-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-kb-ebsco-java-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-dcb-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-dematic-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-oai-pmh-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-inventory-update-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-search-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-orders-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-orders-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-invoice-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-circulation-item-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-batch-print-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-sip2-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-inventory-storage-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-licenses-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "nginx-edge", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-invoice-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-login-saml-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-agreements-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-di-converter-storage-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-erm-usage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-copycat-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-courses-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-oa-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-email-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-serials-management-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-patron-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-permissions-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-gobi-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-configuration-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-calendar-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-patron-blocks-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-fqm-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-service-interaction-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-circulation-storage-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-caiasoft-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-finance-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-authtoken-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "edge-connexion-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-ncip-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-notes-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-bulk-operations-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-oai-pmh-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-erm-usage-harvester-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-settings-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-notify-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-source-record-storage-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-quick-marc-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-login-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-inventory-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-rtac-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-inn-reach-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-lists-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-finance-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-password-validator-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-orders-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-fqm-manager-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-dcb-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-source-record-manager-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-users-bl-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-template-engine-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-courses-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-patron-b", ".", ".", { "region": "us-east-1" } ],
[ "...", "mod-ebsconet-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-data-export-worker-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "mod-remote-storage-b", ".", ".", { "region": "us-east-1", "visible": false } ],
[ "...", "edge-inn-reach-b", ".", ".", { "region": "us-east-1", "visible": false } ]
],
"view": "timeSeries",
"period": 60,
"yAxis": {
"left": {
"min": 0
}
},
"stacked": false,
"title": "CI/CO Service Memory Usage",
"region": "us-east-1",
"stat": "Average"
}