Overview
Bulk Edit - Establish a performance baseline for user status bulk updates.
- How long does it take to export 100, 1000, 5000, 10k, and 100K records?
- Use it for up to 5 concurrent users.
- Look for a memory trend and CPU usage
- Pay attention to any RTR token expiration messages and observe how/if BE is affected by expiring tokens. If needed set the Access token's expiration time to 300s or less to trigger the Access token's quick expiration.
How long does it take to export 100, 1000, 10k, and 100K records?
- Can it be used with up to 5 concurrent users?
- Run consecutively four jobs editing 10k item records
- Run simultaneously four jobs editing 10k item records
- Look for a memory trend and CPU usage
Summary
Results
Total processing time of upload and edit - commit changes. Units =hours:minutes: seconds
onds
Number of virtual user/ Records | 1VU | 2VU | 3VU | 4VU | 5VU |
---|---|---|---|---|---|
100 records | |||||
1000 records | |||||
5000 records | |||||
10000 records | |||||
100K records | 03:14:59 | 03:33:24 03:15:41 | 03:27:06 03:21:31 03:25:10 | 06:10:23 03:33:23 03:20:39 03:21:24 | 04:04:24 04:02:45 04:03:11 04:06:32 04:12:04 |
Resource utilization
Test 1. Bulk-edit 5 consecutive runs of 100K records, starting from 1VU up to 5VU. From the Instance CPU utilization graph, you can see that the bulk-edit process consists of 2 parts: file uploading(90-120 minutes) and records processing.
Memory usage
Test 1. Bulk-edit 5 consecutive runs of 100K records, starting from 1VU up to 5VU.
Service CPU usage
Test 1. Bulk-edit 5 consecutive runs of 100K records, starting from 1VU up to 5VU.
Appendix
Infrastructure
PTF -environment pcp1
- 11 m6g.2xlarge EC2 instances located in US East (N. Virginia)us-east-1
- 2 instances of db.r6.xlarge database instances, one reader, and one writer
- MSK tenant
- 4 m5.2xlarge brokers in 2 zones
Apache Kafka version 2.8.0
EBS storage volume per broker 300 GiB
- auto.create.topics.enable=true
- log.retention.minutes=480
- default.replication.factor=3
Modules memory and CPU parameters
Module | Task Def. Revision | Module Version | Task Count | Mem Hard Limit | Mem Soft limit | CPU units | Xmx | MetaspaceSize | MaxMetaspaceSize | R/W split enabled |
pcp1-pvt | ||||||||||
Dec 06 13:08:42 UTC 2023 | ||||||||||
mod-authtoken | 13 | /mod-authtoken:2.14.1 | 2 | 1440 | 1152 | 512 | 922 | 88 | 128 | FALSE |
mod-inventory-update | 9 | /mod-inventory-update:3.2.1 | 2 | 1024 | 896 | 128 | 768 | 88 | 128 | FALSE |
mod-bulk-operations | 8 | mod-bulk-operations:1.1.0 | 2 | 3072 | 2600 | 1024 | 1536 | 384 | 512 | FALSE |
mod-users-bl | 9 | /mod-users-bl:7.6.0 | 2 | 1440 | 1152 | 512 | 922 | 88 | 128 | FALSE |
mod-inventory-storage | 12 | mod-inventory-storage:27.0.3 | 2 | 4096 | 3690 | 2048 | 3076 | 384 | 512 | FALSE |
mod-data-export-worker | 9 | mod-data-export-worker:3.1.0 | 2 | 3072 | 2800 | 1024 | 2048 | 384 | 512 | FALSE |
mod-source-record-storage | 15 | mod-source-record-storage:5.7.3 | 2 | 5600 | 5000 | 2048 | 3500 | 384 | 512 | FALSE |
mod-inventory | 11 | mod-inventory:20.1.3 | 2 | 2880 | 2592 | 1024 | 1814 | 384 | 512 | FALSE |
mod-users | 20 | mod-users:19.2.1 | 2 | 1024 | 896 | 128 | 768 | 88 | 128 | FALSE |
mod-patron-blocks | 9 | mod-patron-blocks:1.9.0 | 2 | 1024 | 896 | 1024 | 768 | 88 | 128 | FALSE |
nginx-edge | 9 | nginx-edge:2023.06.14 | 2 | 1024 | 896 | 128 | 0 | 0 | 0 | FALSE |
mod-quick-marc | 9 | mod-quick-marc:5.0.0 | 1 | 2288 | 2176 | 128 | 1664 | 384 | 512 | FALSE |
nginx-okapi | 9 | nginx-okapi:2023.06.14 | 2 | 1024 | 896 | 128 | 0 | 0 | 0 | FALSE |
okapi-b | 11 | okapi:5.1.2 | 3 | 1684 | 1440 | 1024 | 922 | 384 | 512 | FALSE |
mod-data-export | 11 | mod-data-export:4.8.1 | 1 | 1024 | 896 | 1024 | 768 | 88 | 128 | FALSE |
mod-data-export-spring | 11 | mod-data-export-spring:3.0.0 | 1 | 2048 | 1844 | 256 | 1536 | 384 | 512 | FALSE |
Methodology/Approach
- Item records update:
- Upload file with item barcodes
- Click the Start bulk edit option in the Action menu and make the following changes:
- Set Temporary location to Clear field
- Set Permanent location to < to the value available on test environment>
- Set Status to Unknown
- Set Temporary loan type to Clear field
- Set Permanent loan type to < to the value available on test environment>
- Add Administrative note by adding text: "This is a new administrative note"
- Add Action note by adding text: "This is a new action note"
- Suppress from discovery (set the value to true)
- Confirm the changes
- Commit the changes
- Verify the changes are correct
- Download the file with updated records
- Download the file with errors (if applicable)
Test 1: From UI run Bulk edit job with configuration above. Run up to 5 concurrent processes in new browser tabs. Check if after the update files are downloaded successfully.
Test 2: Manually tested 100k+50k+1 record files DI started simultaneously on every 3 tenants (9 jobs total).
Test 3: Run CICO on one tenant, DI jobs 3 tenants, including the one that runs CICO. Start the second job after the first one reaches 30%, and start another job on a third tenant after the first job reaches 60% completion. CICO: 20 users, DI file size: 25k
Test 4. To define the optimal value for RECORDS_PER_SPLIT_FILE(500, 1K, 2K, 5K) data-import job with PTF-Create-2 profile were run for 25K for 1 tenant simultaneously, for 2 tenants and for 3 tenants.