Check in items workflow Test Report (Fameflower)
Overview
In this workflow we are checking the performance of the check in items workflow running in the Fameflower release PERF-37: Check in itemsClosed. We tested it with 1, 5, 8, and 20 virtual users for 30 minutes.
Backend:
mod-inventory-storage-19.1.2
mod-inventory-14.1.3
mod-circulation-18.0.9
mod-circulation-storage-11.0.8
okapi-2.38.0
mod-authtoken-2.4.0
mod-permissions-5.9.0
mod-data-export-1.1.1
mod-source-record-storage-3.1.4
mod-source-record-manager-2.1.4
Frontend:
folio_inventory-2.0.2
folio_circulation-2.0.0
Item Check-in (folio_checkin-2.0.1)
Environment:
55 back-end modules deployed in 110 ECS services
3 okapi ECS services
8 m5.large EC2 instances
1 db.r5.xlarge AWS RDS instance
WARNING logging level
High Level Summary
Overall check in time is 781 ms for a typical use case of 8 users, 1127.57 ms for 20 users
Slow APIs taking more than 100ms to run:
POST checkin-by-barcode
GET inventory/items
mod-circulation-storage log warnings for missing indexes. Adding the missing indexes could improve performance while stop logging these warning. See the Recommended Improvements for the JIRAs created to address these indexes.
JVM profiling shows JSON de/serialization operations one of the slowest operations, totaling more CPU time than other calls. Since FOLIO modules retrieve and stores JSON objects, making sure that serializing and deserializing JSON efficient is essential, see Recommended Improvements
Test Runs
Test | Virtual Users | Duration | OKAPI log level | Profiled | Ramp up (total time in seconds) |
1. | 1 | 30 min | WARNING | No | 1 |
2. | 5 | 30 min | WARNING | No | 50 |
3. | 8 | 30 min | WARNING | No | 80 |
4. | 20 | 30 min | WARNING | No | 200 |
5. | 8 | 30 min | WARNING | Yes | 80 |
Results
Overall check in items workflow time in seconds
Slow APIs taking more than 100 ms to return (Profiling OFF)
JVM Profiling
Overall slow methods (between the modules profiled: mod-circulation, mod-circulation-storage, mod-inventory, mod-inventory-storage)
To see more drill down these methods at: http://ec2-54-165-58-65.compute-1.amazonaws.com/grafana/d/b3iP-8hiz/java-profiling-folio-new?orgId=1&from=1593497088961&to=1593498943060&var-service_tag=mod-inventory-storage&var-service_tag=mod-inventory&var-service_tag=mod-circulation-storage&var-service_tag=mod-circulation&var-aggregation=10s