Test status: IN PROGRESSPASSED
| Table of Contents | ||
|---|---|---|
|
...
- 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 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 | ||||
|---|---|---|---|---|
| ||||
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, Longevity | 842459 | 319 | 500/Internal Server Error | 306 | 422/Unprocessable Entity | 7 | 400/Bad Request | 3 | 401/Unauthorized | 2 | 504/Gateway Time-out | 1 |
...
| PTF -environment recp1 |
|---|
|
...
New approach implemented in SRS module to run marc_indexers (mi) WITH deleted_rows every 30 minutes
| Code Block | ||
|---|---|---|
| ||
{
"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
...
To define the response times for requests that take longer than 100 milliseconds