...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Jira Legacy | ||||||||
---|---|---|---|---|---|---|---|---|
|
...
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
- 2 (1 reader, 1 writer) db.r5.xlarge AWS RDS instance
- INFO logging level
...
Test | Virtual Users | Duration | OKAPI log level | Loans per User |
1. | 1 | 30 min | WARNING | 10, 50, 100, 200 |
2. | 2 | 30 min | WARNING | 10, 50, 100, 200 |
3. | 1 | 30 min | INFO | 200 |
Results
Renew all loans by barcode
Total Users for 30 minutes Loans Renew all loans (Average) POST_/circulation/renew-by-barcode (Average) 1 user 10 6.52 seconds
585.11 ms
50 31.81 seconds
637.48 ms
100 1.06 minutes 650.15 ms
200 2.09 minutes 673.40 ms
2 users 10 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
- 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.
...
Query | Total time | Average Time | Total 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 ms | 9027 |
SELECT count_estimate('SELECT jsonb FROM fs09000000_mod_patron_blocks.user_summary WHERE (jsonb->>''userId'') = ''4deba809-4fb4-432a-b3df-c54b6ad51d22''') | 2 ms or 10% | 2 ms | 8457 |
Service CPU Utilization
Service CPU utilization is relatively on a lower side for most modules except for mod-circulation. For service with the highest CPU utilization is shown by range to get a better picture.
For 30 minutes | Modules | Service CPU Utilization |
1 user | mod-inventory | 3% |
mod-inventory-storage | 10% | |
mod-circulation | 80%70%-95% | |
mod-circulation-storage | 6% | |
2 users | mod-inventory | 3.25% |
mod-inventory-storage | 17.75% | |
mod-circulation | 8170%-122.75% | |
mod-circulation-storage | 11.75% |
...
Service memory was stable for most modules except mod-circulation which was on the higher side. . For service with the highest Memory utilization is shown by range to get a better picture.
For 30 minutes | Modules | Service Memory CPU Utilization |
1 user | mod-inventory | 63% |
mod-inventory-storage | 56% | |
mod-circulation | 115%113%-118% | |
mod-circulation-storage | 42% | |
2 users | mod-inventory | 65% |
mod-inventory-storage | 56% | |
mod-circulation | 115%113%-118% | |
mod-circulation-storage | 49% |
Graph for service memory utilization for mod-circulation. Memory usage started at ~113%, rose to ~118% and fall back to ~101%
Recommended Improvements
Anchor | ||||
---|---|---|---|---|
|
- The following JIRAs has been created for mod-authtoken optimization:
Jira Jira Legacy server System JIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 01505d01-b853-3c2e-90f1-ee9b165564fc key MODAT-80
Jira Jira Legacy server System JIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 01505d01-b853-3c2e-90f1-ee9b165564fc key MODAT-83
Appendix
See Attached user_loanRenewals-test-report.xlsx for details