Versions Compared

Key

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

WORK IN PROGRESS

...

In this workflow, we are checking the performance of the renewal of loan items for the Goldenrod release.

We tested it with 1, 2 virtual users for 30 minutes.  

Backend:

  • mod-users-17.1.0
  • mod-users-bl-6.0.0
  • mod-authtoken-2.5.1
  • mod-permissions-5.11.2
  • mod-circulation-19.0.9
  • mod-circulation-storage-12.0.1
  • okapi-3.1.1

Environment:

  • 55 back-end modules deployed in 110 ECS services
  • 3 okapi ECS services
  • 8 m5.large  EC2 instances
  •  db.r5.xlarge AWS RDS instance
  • INFO logging level

...

Test

Virtual Users

Duration

OKAPI log level

Profiled

Loans per User

1. 

1

30 min

WARNING

No

10, 50, 100, 200

2. 

2

30 min

WARNING

No

10, 50, 100, 200

3.130 minINFONo10, 50, 100, 200


Results

  1. Renew all loans by barcode

    For 30 minutesLoansRenew all loans (Average)POST_/circulation/renew-by-barcode (Average)
    1 user10

    6.52 seconds

    585.11 ms

    50

    31.81 seconds

    637.48 ms

    1001.06 minutes

    650.15 ms

    2002.09 minutes

    673.40 ms

    2 users10

    7.42 seconds

    683.76 ms

    50

    32.61 seconds

    686.65 ms

    100

    1.10 minutes

    705.37 ms

    200

    2.27 minutes

    747.04 ms



  2. Below is the dependency graph generated from Giraffe for single POST_/circulation/renew-by-barcode API. It shows individual calls made by renew-by-barcode to gather prerequisite data from different APIs such as item-storage, location-units, loan-types, request-storage, notice-policy, locations, and mod-authtoken. In all, this call took 990 ms, and 6% of that is consumed by mod-authtoken and the remaining 94% of the time is taken by other APIs to gather prerequisite data.

...

The database CPU usage increases gradually for 1, 2  users run. At maximum 9% CPU usage for 1 user. For 2 users, max CPU utilization increases and then stabilizes as the number of loans increases, mostly because RDS Postgresql is caching the most frequent query results. Therefore, CPU utilization is relatively on the lower side.

For 30 minutesLoansRDS CPU Utilization
1 user10

7%

50

8%

1008%
2009%
2 users10

14%

50

15%

100

15%

200

15%


Database queries 
Anchor
slowQueries
slowQueries

...

QueryTotal timeAverage TimeTotal calls made
SELECT count_estimate('SELECT jsonb,id FROM fs09000000_mod_inventory_storage.item WHERE lower(f_unaccent(item.jsonb->>''barcode'')) LIKE lower(f_unaccent(''54357881''))')2 minutes or 71%14 ms9027
SELECT count_estimate('SELECT jsonb FROM fs09000000_mod_patron_blocks.user_summary WHERE (jsonb->>''userId'') = ''4deba809-4fb4-432a-b3df-c54b6ad51d22''')0 minutes or 10%2 ms8457


Service CPU Utilization

Service CPU utilization is relatively on a lower side for most modules except for mod-inventory-storagecirculation

For 30 minutesModulesService CPU Utilization
1 user
5 usersAverage %Average %
mod-inventory

3%

mod-inventory-storage

10%

mod-circulation
3.143.95
80%
mod-circulation-storage
4.846.38
6%
2 usersmod-inventory
5.386.54

3.25%

mod-inventory-storage
2624mod-rtac2.453

...

17.75%

mod-circulation

81.75%

mod-circulation-storage

11.75%

Service Memory Utilization

Memory was stable throughout the runs, only a spike here or there, but in a 30 minutes run they were consistent. 

For 30 minutesModulesMemory CPU Utilization
1 user
5 usersAverage %Average %
mod-inventory

63%

mod-inventory-storage

56%

mod-circulation
72.172.50
115%
mod-circulation-storage
39.4639.55
42%
2 usersmod-inventory
4446.5

65%

mod-inventory-storage
44.3045

56%

mod-circulation

115%

mod-
rtac55.255
circulation-storage

49%


Recommended Improvements 
Anchor
recommendedImprovements
recommendedImprovements

  • The following JIRA has been created for mod-authtoken optimization:

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId01505d01-b853-3c2e-90f1-ee9b165564fc
keyMODAT-80

Appendix

See Attached rtac-test-report.xlsx for details