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