keycloak-scim/testsuite/performance/README.provisioning-parameters.md

4.9 KiB

Keycloak Performance Testsuite - Provisioning Parameters

Keycloak Server Settings:

Category Setting Property Default value
JVM Memory settings keycloak.jvm.memory -Xms64m -Xmx2g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
Undertow HTTP Listener max connections keycloak.http.max-connections 500
AJP Listener max connections keycloak.ajp.max-connections 500
IO Worker IO thread pool keycloak.worker.io-threads 2
Worker Task thread pool keycloak.worker.task-max-threads 16
Datasources Connection pool min size keycloak.ds.min-pool-size 10
Connection pool max size keycloak.ds.max-pool-size 100
Connection pool prefill keycloak.ds.pool-prefill true
Prepared statement cache size keycloak.ds.ps-cache-size 100

Load Balancer Settings:

Category Setting Property Default value
JVM Memory settings keycloak-lb.jvm.memory -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
Undertow HTTP Listener max connections keycloak-lb.http.max-connections 500
IO Worker IO thread pool keycloak-lb.worker.io-threads 2
Worker Task thread pool keycloak-lb.worker.task-max-threads 16

Infinispan Server Settings

Category Setting Property Default value
JVM Memory settings infinispan.jvm.memory -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -XX:+DisableExplicitGC

Docker settings

By default, there are 4 CPU cores allocated: core 0 for monitoring, core 1 for database (MariaDB), and cores 2 and 3 for Keycloak server. Default memory limits for database and Keycloak server are 2g. The cpuset and memlimit parameters set here are set to cpuset and mem_limit parameters of docker-compose configuration. See docker-compose documentation for meaning of the values. How to set the parameters correctly depends on number of factors - number of cpu cores, NUMA, available memory etc., hence it is out of scope of this document.

Container Setting Property Default value
Keycloak Allocated CPUs keycloak.docker.cpuset 2-3
Allocated CPUs for DC1 keycloak.dc1.docker.cpuset 2-3
Allocated CPUs for DC2 keycloak.dc2.docker.cpuset 2-3
Available memory keycloak.docker.memlimit 2g
MariaDB Allocated CPUs db.docker.cpuset 1
Available memory db.docker.memlimit 2g
Monitoring Allocated CPUs monitoring.docker.cpuset 0