Check-in-check-out Test Report (Trillium) [ECS]
Overview
Regression testing of Check-In/Check-Out (CI/CO) tests in Trillium ECS release.
Test on central tenant won’t happen as on ptf environment we have restored DB from Bugfest and central consortia tenant doesn’t have items. We’ll proceed testing on member tenants
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 define the response times for requests that take longer than 100 milliseconds
To find any trends for resource utilization and recommend improvements
To check how system behaves over extended period during longevity test.
Compare results (current and previous)
The current ticket: https://folio-org.atlassian.net/browse/PERF-1372 , https://folio-org.atlassian.net/browse/PERF-1430
The previous results report: Check-in-check-out Test Report (Sunflower) [ECS] CSP1&CSP2
Summary
Common results:
Check-in and check-out flows in Trillium showed improvement compared to Sunflower. Check-out improved by 15–31% for lower user loads and ~22% at 75 vUsers. Check-in improved by 12–34% for 8–30 vUsers but degraded by ~14.5% at 75 vUsers.
Tests #1, #2, #3, #4
Response times in average:
Check-in — minimum 314 ms with 20 vUsers and maximum 970 ms with 75 vUsers.
Check-out — minimum 894 ms with 20 vUsers and maximum 2211 ms with 75 vUsers.
Longevity test
Showed good performance, comparable with the rest of a tests CI 280 ms, CO 906 ms.
Got significantly smaller DB CPU usage comparing with Sunflower
mod-circulation start crashing after end of a test with OOM https://folio-org.atlassian.net/browse/CIRC-2630
mod-inventory storage got growing memory trend that will lead to OOM as well. https://folio-org.atlassian.net/browse/MODINVSTOR-1583
Resources
CPU utilization
CPU utilization depends on number of concurrent virtual users and increases accordingly.
Top used modules: mod-circulation-b, mod-circulation-storage-b, mod-users-b, kong-b, mod-rtac-cache-b, mod-remote-storage-b, mod-feesfines-b, mod-inventory-storage-b.
CPU utilization for 30 vUsers: mod-circulation-188, mod-circulation-storage-107, mod-rtac-cache-96, mod-users-85, kong-82, mod-remote-storage-49, mod-feesfines-42, mod-inventory-storage-41
Memory consumption
Memory consumption was stable during tests. The highest usage for top consumer Mgr-applications-b was at 63%.
RDS CPU utilization average
8 vUsers — 12%, 20 vUsers — 18%, 30 vUsers — 27%, 75 vUsers — 57%. Significantly lower than Sunflower (which reached 99% at 75 vUsers).
CPU (User) usage by broker
8 vUsers - 11%, 20 vUsers - 12%, 30 vUsers - 13%, 75 vUsers - 16%.
Test Runs
The following table contains tests configuration information
Test # | vUsers | Ramp-up, sec | Duration, sec |
1 | 8 | 80 | 2700 |
2 | 20 | 200 | 2700 |
3 | 30 | 300 | 2700 |
4 | 75 | 750 | 2700 |
5 | 30 | 300 | 43200 |
Results
Response time
The table contains results of Check-in, Check-out tests in Trillium release.
Test #1, #2, #3, #4
| 8 vUsers (test #1) | 20 vUsers (test #2) | 30 vUsers (test #3) | 75 vUsers (test #4) | ||||||||
Requests | Response Times (ms) | Response Times (ms) | Response Times (ms) | Response Times (ms) | ||||||||
Label | #Samples | 95th pct | Average | #Samples | 96th pct | Average | #Samples | 97th pct | Average | #Samples | 98th pct | Average |
Check-Out Controller | 2418 | 1747 | 948 | 6426 | 1733 | 894 | 9700 | 2206 | 923 | 23911 | 1046 | 2211 |
Check-In Controller | 1876 | 672 | 404 | 4868 | 647 | 314 | 7296 | 974 | 318 | 17947 | 349 | 970 |
POST_circulation/check-out-by-barcode (Submit_barcode_checkout) | 2417 | 380 | 243 | 6424 | 441 | 230 | 9697 | 650 | 234 | 23908 | 271 | 862 |
POST_circulation/check-in-by-barcode (Submit_barcode_checkin) | 1876 | 319 | 205 | 4864 | 249 | 124 | 7294 | 373 | 127 | 17944 | 145 | 460 |
GET_circulation/loans (Submit_patron_barcode) | 2419 | 324 | 137 | 6424 | 283 | 129 | 9696 | 528 | 135 | 23910 | 158 | 504 |
GET_circulation/loans (Submit_barcode_checkout) | 2417 | 196 | 134 | 6424 | 271 | 129 | 9696 | 259 | 131 | 23906 | 154 | 404 |
GET_inventory/items (Submit_barcode_checkout) | 2417 | 79 | 46 | 6424 | 83 | 43 | 9696 | 149 | 46 | 23907 | 54 | 190 |
Longevity test:
30 vUsers Longevity test (test #5) | |||
|---|---|---|---|
Requests |
| Samples, Response Times (ms) | |
Label | #Samples | 95th pct | Average |
Check-Out Controller | 158792 | 1446 | 906 |
Check-In Controller | 120139 | 530 | 286 |
POST_circulation/check-out-by-barcode (Submit_barcode_checkout) | 158792 | 315 | 225 |
POST_circulation/check-in-by-barcode (Submit_barcode_checkin) | 120139 | 176 | 108 |
GET_circulation/loans (Submit_patron_barcode) | 158796 | 118 | 170 |
GET_circulation/loans (Submit_barcode_checkout) | 158792 | 118 | 168 |
GET_inventory/items (Submit_barcode_checkout) | 158792 | 37 | 64 |
Comparisons
This table has comparison between average values of response times of Trillium and Sunflower releases
| 8 vUsers (test #1) | 20 vUsers (test #2) | 30 vUsers (test #3) | 75 vUsers (test #4) | ||||||||||||
Requests | Response Times, milliseconds | |||||||||||||||
| Sunflower | Trillium |
|
| Sunflower | Trillium |
|
| Sunflower | Trillium |
|
| Sunflower | Trillium |
|
|
Label | Average | Delta,ms | Difference,% | Average | Delta,ms | Difference,% | Average | Delta,ms | Difference,% | Average | Delta,ms | Difference,% | ||||
Check-Out Controller | 1122 | 948 | -174 | -15.51% | 1201 | 894 | -307 | -25.56% | 1347 | 923 | -424 | -31.48% | 2825 | 2211 | -614 | -21.73% |
Check-In Controller | 459 | 404 | -55 | -11.98% | 445 | 314 | -131 | -29.44% | 484 | 318 | -166 | -34.30% | 847 | 970 | 123 | 14.52% |
API requests where response times >= 100 milliseconds
API | 75 vUsers Trillium |
|---|---|
POST_circulation/check-out-by-barcode (Submit_barcode_checkout) | 862 |
POST_circulation/check-in-by-barcode (Submit_barcode_checkin) | 460 |
GET_circulation/loans (Submit_patron_barcode) | 504 |
GET_circulation/loans (Submit_barcode_checkout) | 404 |
GET_inventory/items (Submit_barcode_checkout) | 190 |
Longevity test comparison:
Transaction | Sunflower (ms) | Trillium (ms) |
|---|