Keycloak Performance Tuning - Postgres | Infinispan | Quarkus

Hello,

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.

Thanks,
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


`quarkus.http.io-threads`

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?

Thoughts?

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.

2 Likes