Overview
Bulk Edits - Establish a performance baseline for combined bulk updates PERF-480 in the Orchid release that has architectural changes that were implemented in UXPROD-3842. The goal is to make sure that bulk edits can be performed simultaneously.
- How long does it take to export 100, 1000, 2500, 5000 records?
- Use it for up to 5 concurrent users.
- Look for a memory trnend and CPU usage
Summary.
Test report for Bulk Edits users-app functionality 2023-09-15.
- 5k records per user, 5 users simultaneously (25k records total) can be uploaded in about 6 min 13 seconds,
- The files with identifiers should be strictly determined.
- The memory of all modules during the tests for 5000 records with 5 parallel was stable, the memory gap in Figure 1 was caused by restarting several modules before DI job run.
- Instance CPU usage
- maximal value for text 4VU (0.1-1-2.5k-5k) was 26%
- maximal value for text 5VU (0.1-1-2.5k-5k) was 27%
- Service CPU usage for test 5VU (0.1-1-2.5k-5k)
- CPU of mod-bulk-operations 126%, for all other modules, did not exceed 22%.
- RDS CPU utilization did not exceed 43% for 5jobs 5000 records and 34% for 4jobs 5k.
Recommendations & Jiras
For further testing Users' bulk editing can be performed with 10k records
Test Runs
Total processing time of upload and edit - commit changes. Units =minutes:seconds
Number of virtual user/ Records | 1VU | 2VU | 3VU | 4VU | 5VU |
---|---|---|---|---|---|
100 records | 00:01:05 | 00:01:03 00:01:03 | 00:01:03 00:01:03 00:01:05 | 00:01:03 00:01:03 00:01:03 00:01:04 | 00:01:04 00:01:04. 00:01:04 00:01:04 00:01:04 |
1000 records | 00:01:37 | 00:01:59 00:01:35 | 00:02:02 00:02:05 00:01:36 | 00:02:02 00:02:02 00:01:59 00:02:00 | 00:02:11 00:02:13 00:02:13 00:02:05 00:02:06 |
2500 records | 00:03:28 | 00:03:30 00:03:31 | 00:03:42 00:03:42 00:01:10(*1) | 00:00:23(*2) 00:03:47 00:03:46 00:03:46 | 00:03:48 00:04:03 00:03:44 00:04:04 00:04:04 |
5000 records | 00:05:13 | 00:06:36 (*3) | 00:06:48 00:06:50 00:06:50 (*3) | 00:06:32 00:06:32 00:02:29. 00:02:29 (*3) | 00:06:13 00:06:13 00:06:11 00:06:08 00:06:13 (*3) |
(*1) Duplicate barcodes in CSV input data, 1200 out of 2500 records were processed
(*2) Index 546 out of bounds for length 13 (ArrayIndexOutOfBoundsException) - MODEXPW-306Getting issue details... STATUS
(*3) Was running as a separate test to avoid duplication of input data
Comparison with previous results
5VU, Records | Nolana | Orchid |
---|---|---|
2500 | 2 min 9 sec | 4 minutes 4 seconds |
5000 records | 3 min 47 sec | 6minutes 13 seconds |
Memory usage
The time range marked with # Several modules were restarted and then data import jobs were running on the environment
Memory usage during the testing with 1-5 concurrent and 100-1000-2500-5000 records
Memory usage during the testing with 2-5 concurrent and 5000 records
Memory usage for the same time range as the figure below, but only involved services were selected.
Instance CPU utilization
CPU instance utilization for 1 up to 5 Vu with 100-1000-2500-5000 records
The test 5VU(0.1-1-2.5k-5k) was restarted because there were in the input data(Barcodes duplication)
CPU instance utilization for 2 up to 5 Vu with 5000 records
Service CPU utilization
CPU instance utilization for 1 up to 5 Vu with 100-1000-2500-5000 records
CPU instance utilization for 1 up to 5 Vu with 100-1000-2500-5000 records
RDS CPU utilization
For all tests - RDS CPU utilization exceeds 40% (for tests with 5k user records). For the tests with 2500 user records did not exceed 27%.
Database connections
Errors in logs during testing
(*1) Duplicate barcodes in CSV input data, 1200 out of 2500 records were processed
(*2) Index 546 out of bounds for length 13 (ArrayIndexOutOfBoundsException) - MODEXPW-306Getting issue details... STATUS
Appendix
Infrastructure
PTF -environment ncp5 [ environment name]
- 8 m6i.2xlarge EC2 instances located in US East (N. Virginia)us-east-1 [Number of ECS instances, instance type, location region]
- 2 instances of db.r6.xlarge database instances: Writer & reader instances
- MSK ptf-kakfa-3 [ kafka configurations]
- 4 kafka.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 |
ncp5-pvt | |||||||||
Wed Sep 13 09:54:48 UTC 2023 | |||||||||
mod-agreements | 6 | mod-agreements:5.5.2 | 2 | 1592 | 1488 | 128 | 968 | 384 | 512 |
mod-bulk-operations | 17 | mod-bulk-operations:1.0.6 | 2 | 3072 | 2600 | 1024 | 1536 | 384 | 512 |
mod-users-bl | 8 | mod-users-bl:7.5.0 | 2 | 1440 | 1152 | 512 | 922 | 88 | 128 |
mod-inventory-storage | 12 | mod-inventory-storage:26.0.0 | 2 | 4096 | 3690 | 2048 | 3076 | 384 | 512 |
mod-data-export-worker | 10 | mod-data-export-worker:3.0.13 | 1 | 3072 | 2800 | 1024 | 2048 | 384 | 512 |
mod-inventory | 12 | mod-inventory:20.0.6 | 2 | 2880 | 2592 | 1024 | 1814 | 384 | 512 |
nginx-okapi | 7 | nginx-okapi:2023.06.14 | 2 | 1024 | 896 | 128 | 0 | 0 | 0 |
okapi-b | 8 | okapi:5.0.1 | 3 | 1684 | 1440 | 1024 | 922 | 384 | 512 |
mod-notes | 6 | mod-notes:5.0.1 | 2 | 1024 | 896 | 128 | 952 | 384 | 512 |
mod-data-export-spring | 8 | mod-data-export-spring:2.0.2 | 1 | 2048 | 1844 | 256 | 1536 | 384 | 512 |