Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Test status: IN PROGRESSPASSED

Table of Contents
outlinetrue

...

  • Regression testing of Check-In/Check-Out (CI/CO) fixed load tests on eureka based environment in Ramsons non-ECS release.
  • Test was carried out on central tenant.
  • The purposes of CI/CO testing:
    • To test how different load from CI/CO flow affect the system
    • To define response times of 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 (SSO Session Max limit in keycloak is 10 hours)
    • Compare results (current and previous)
    • The current ticket: PERF-1065 - [Ramsons] [non-ECS] [Eureka] CI/CO

...

  • RDS CPU utilization average
    • RDS CPU utilized in average: 8 vUsers - 15%, 20 vUsers - 23%, 30 vUsers - 30%, 75 vUsers - 66% During longevity test CPU was growing from 32% to 42%.
  • CPU (User) usage by broker
    • 8 vUsers - 15%, 20 vUsers - 16%, 30 vUsers - 17%, 75 vUsers - 22%. During Longevity test - 17%

Recommendations & Jiras

  • To avoid Internal server errors during testing on eureka environment new values were applied for mod-users-keycloak and mod-users-keycloak - Sidecar 1. 

...

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

Test #5

RDS Database Connections

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

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

Test #5

Database load

Code Block
languagesql
titleLoad by sqls (AAS) - SQL statements
INSERT INTO fs09000000_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);

WITH prefixes AS (
SELECT prefix || '%' AS pattern
FROM UNNEST(CAST($1 AS text[])) AS prefix
),
permission_names AS (
SELECT permission_name
FROM UNNEST(CAST($2 AS text[])) AS permission_name
),
user_capabilities AS (
SELECT uc.user_id, uc.capability_id FROM user_capability uc

UNION ALL

SELECT ucs.user_id, csc.capability_id
FROM user_capability_set ucs
INNER JOIN capability_set_capability csc
ON ucs.capability_set_id = csc.capability_set_id

UNION ALL

SELECT ur.user_id, rc.capability_id
FROM user_role ur
INNER JOIN (
SELECT rc.role_id, rc.capability_id FROM role_capability rc

UNION ALL

SELECT rcs.role_id, csc.capability_id
FROM role_capability_set rcs
INNER JOIN capability_set_capability csc
ON rcs.capability_set_id = csc.capability_set_id
) rc ON rc.role_id = ur.role_id
),
user_permissions AS (
SELECT DISTINCT c.folio_permission
FROM user_capabilities uc
INNER JOIN capability c ON uc.capability_id = c.id
WHERE uc.user_id = $3
AND (
c.folio_permission IN (SELECT permission_name FROM permission_names)
OR EXISTS (
SELECT 1 FROM prefixes p
WHERE c.folio_permission LIKE p.pattern
)
)
),
replaced_permissions AS (
SELECT UNNEST(p.replaces) AS folio_permission
FROM user_permissions up
INNER JOIN permission p
ON p.name = up.folio_permission
)
SELECT DISTINCT folio_permission
FROM (
SELECT folio_permission FROM user_permissions

UNION ALL

SELECT folio_permission FROM replaced_permissions
) t

UPDATE fs09000000_mod_inventory_storage.item SET jsonb=$1 WHERE id=$2 RETURNING jsonb::text
SELECT fs09000000_mod_inventory_storage.count_estimate('SELECT jsonb,id FROM fs09000000_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=''3a7de149-f17d-4602-adfe-0b09bf8e884a'')')
SELECT upsert('circulation_logs', $1::uuid, $2::jsonb)
SELECT COUNT(*) FROM fs09000000_mod_users.users 
SELECT fs09000000_mod_circulation_storage.count_estimate('SELECT jsonb,id FROM fs09000000_mod_circulation_storage.loan_policy WHERE id=''2be97fb5-eb89-46b3-a8b4-776cea57a99e''')
SELECT fs09000000_mod_patron_blocks.count_estimate('SELECT jsonb FROM fs09000000_mod_patron_blocks.user_summary WHERE (jsonb->>''userId'') = ''aa054aab-73c3-4764-941e-41fdff14900b''')
SELECT jsonb FROM fs09000000_mod_patron_blocks.user_summary WHERE (jsonb->>'userId') = 'cd980484-e41b-4334-8ade-1f31a067422e'




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

Test #5



MSK resources utilization

CPU (User) usage by broker

8 vUsers - 15%, 20 vUsers - 16%, 30 vUsers - 17%, 75 vUsers - 22%. During Longevity test - 17%

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

Test #5

Errors:

Test

#Samples

#Errors

Error

#Errors

Error

#Errors

Error

#Errors

Error

#Errors

Error

#Errors

#5, Longevity842459319500/Internal Server Error306422/Unprocessable Entity7400/Bad Request3401/Unauthorized2504/Gateway Time-out1

...

PTF -environment recp1
  • recp1 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

...

New approach implemented in SRS module to run marc_indexers (miWITH deleted_rows every 30 minutes

Code Block
languagetext
{
"name": "srs.marcIndexers.delete.interval.seconds",
"value": "1800"
},
{
"name": "srs.marcIndexers.delete.dirtyBatchSize",
"value": "1000"
}

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

DB trigger setup in Ramsons

...