Performance of mod-roles-keycloak Testing Report 02.04.2026

Performance of mod-roles-keycloak Testing Report 02.04.2026

Overview

Performance testing was conducted for the mod-roles-keycloak module following recent optimizations introduced in MODROLESKC-359. The goal was to validate the performance of role capability assignment operations and ensure they meet the expected time threshold.

This document presents the results of testing performed in prepared environments (selctls2 and segcon). The testing process focuses on key workflows related to role management, including assignment and unassignment of all capabilities and capability sets for a role. Testing activities were executed using a JMeter script simulating the defined workflows.

A comparative approach was used to evaluate performance before and after the applied optimizations, ensuring visibility into any improvements as well as potential functional issues.

The goals of testing:

  • Validate performance of capability and capability set assignment workflows

  • Measure execution time for assignment and unassignment operations

  • Compare system behavior before and after optimization

  • Ensure operations meet the defined performance target (under 1 minute)

  • Identify any functional or performance-related issues during execution

Ticket:PERF-1311: Test performance of mod-roles-keycloakClosed

 

Test runs

Test_1 , Test_2 and Test_3- test on selctls2 environment(befor fix) assgning\unassigmnet 267 capability sets to the role with 0 users assigned

Test_4 -test on selctls2 environment(befor fix) assgning\unassigmnet 267 capability sets to the role with 100 users assigned

Test_5, Test_6 and Test_7-test on asptc environment(after fix) assgning\unassigmnet 267 capability sets to the role with 0 users assigned

Summary

Performance testing covered assignment and unassignment of 267 capability sets under different conditions, including before and after the optimization, as well as with varying numbers of users assigned to the role.

Before the optimization (selctls2), the average execution time for both assignment and unassignment operations was approximately 40 seconds. Increasing the number of users associated with the role (from 0 to 100) did not have a measurable impact on performance, with response times remaining stable.

After the optimization (asptc), the average execution time decreased to approximately 22 seconds for the same operations.

Overall, the applied changes resulted in a significant performance improvement of approximately 45%, while maintaining consistent behavior regardless of the number of users linked to the role. All operations remained within the defined performance target of under 1 minute.

Results

Duration times table for Test_1, Test_2, Test_3, Test_4. Tests befor fix

 

 

Label

Response times (ms)

Test_1

Test_2

Test_3

Test_4

#Samples

95th pct

Avg.

#Samples

95th pct

Avg.

#Samples

95th pct

Avg.

#Samples

95th pct

Avg.

Unassign all capability sets

23

45316

38228

20

44696

43512

22

40088

38852

23

43325

39053

Assign all capability sets

24

46841

37833

21

45795

43954

22

43169

41252

23

43434

38785

Duration times table for Test_5, Test_6, Test_7. Tests after fix

 

 

Label

Response times (ms)

Test_5

Test_6

Test_7

#Samples

95th pct

Avg.

#Samples

95th pct

Avg.

#Samples

95th pct

Avg.

Unassign all capability sets

31

19653

19839

33

21218

19457

32

19749

18949

Assign all capability sets

32

22583

20405

34

24267

21840

32

25142

21866

 

 

Service CPU Utilization for Test_2 and Test_4 (the tests 1-3 and 4-6 are identical, so only one test will be shown befor and after fix):

Service CPU Utilization Test_2

image-20260402-114757.png

 

Service CPU Utilization Test_6

 

image-20260402-114112.png

 

 

Appendix

Infrastructure for Tests 1-4

  1. PTF -environment - selctls2
    9 r7i.2xlarge EC2 instances located in US East (N. Virginia)us-east-1

  2. db.r7g.xlarge database instance
    Option groups - default:aurora-postgresql-16;
    DB instance parameter group - default.aurora-postgresql16;

  3. DB cluster parameter group - fse-aurora-postgresql16

  4. OpenSearch - ptf-loc
    Version Info- OpenSearch 2.19

    Service software version Info - OpenSearch_2_19_R20260218 (latest)
    Data nodes
    Availability Zone(s)- 2-AZ without standby
    Instance type - r7g.xlarge.search
    Number of data nodes - 4
    Storage type - EBS
    EBS volume type - General Purpose (SSD) - gp3
    EBS volume size (GiB) - 500
    Provisioned IOPS - 4500 IOPS
    Provisioned Throughput (MiB/s) - 250 MiB/s

    Master nodes
    Instance type - m7g.large.search
    Number of master nodes - 3

  5. MSK - ptf-loc-1
    Total number of brokers - 6
    Apache Kafka version 3.9.x
    Metadata mode - KRaft
    Cluster configuration name - fse-kafka-config
    Revision - 31
    Brokers Info:
    Broker size - kafka.m7g.large
    Brokers per zone - 3
    Total number of brokers - 6
    Storage Info:

    EBS storage volume per broker - 300 GiB
    Cluster storage mode - EBS storage

Modules memory and CPU parameters:

Cluster Resources - selctls2

Module

Task Definition Revision

Module Version

Task Count

Mem Hard Limit

Mem Soft Limit

CPU Units

Xmx

Metaspace Size

Max Metaspace Size

mod-remote-storage - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-finance-storage - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-mosaic - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-ebsconet - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-consortia-keycloak - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

65

256

0

96

mod-tags - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-notify - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-inventory-update - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-configuration - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-gobi - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-licenses - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-graphql - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-erm-usage - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-roles-keycloak - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

65

256

0

96

mod-batch-print - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-copycat - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96

mod-entities-links - Sidecar 1

N/A

folio/folio-module-sidecar:3.0.18.tls

N/A

1024

512

64

256

0

96