Keycloak Performance Tuning - Postgres | Infinispan | Quarkus


I am exploring if there are any performance tuning recommendations by Keycloaok regarding Postgres / Infinispan / Quakus or it’s more left up to individual tech stacks to be tuned as per their documentation?

Any view on how to configure Keycloak Quarkus ? I don’t see any configuration file under the KC deployment folder structure.

Romil Shah

Any views? recommendation?

I don’t believe there is documentation on this anywhere. Do you have a specific performance problem with the default setup that you are trying to tune for?

I was trying to run the client credential flow using Keycloak and observed response time to be on an average 110 ms for a high volume load (200K token request in an hr ~ 600 TPS )
Currently have 3 instances of Keycloak running and CPU utilization is less than 50%
Wondering if increasing the Quarkus io thread would be of help? Documentation says


The number if IO threads used to perform IO. This will be automatically set to a reasonable value based on the number of CPU cores if it is not provided. If this is set to a higher value than the number of Vert.x event loops then it will be capped at the number of event loops. In general this should be controlled by setting quarkus.vertx.event-loops-pool-size, this setting should only be used if you want to limit the number of HTTP io threads to a smaller number than the total number of IO threads.

Or any other tuning at Quarkus to reduce the overall response time?


Requests like that to the token endpoint do take a bit longer, as they have to verify the credentials, which is processing intensive. I don’t know that adding threads under that load would make as much of a difference as just adding nodes.