-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use a non-blocking handler for SmallRye Health Status #35099
Comments
/cc @Ladicek (smallrye), @jmartisk (health,smallrye), @phillip-kruger (smallrye), @radcortez (smallrye), @xstefank (health) |
PR created: #35100 |
Adding some comments here for people to see the status: This issue has been reverted from 3.5.1, see #36977 |
I'm experiencing issues with health checks under high load situations in a Quarkus Kafka Streams application where liveness probes to |
To benefit from the non-blocking probes, the probes themselves need to need to be non-blocking aka asynchronous. Please review your setup for both your own probes and those provided by frameworks. If they implement |
@ahus1 Ah, I see. So with |
@ngc4579 - yes, this explains the behavior you're seeing. As you've seen the contract is the following: if the liveness probe fails, your Pod will be killed. For the way forward you have different options:
|
@ahus1 Yeah, thanks for clarification. I'll have an eye on production performance and tend to disable Kafka Streams specific health checks in case they actually turn out to be an issue. Meanwhile, I've filed an enhancement request to have the health check changed to an async one if possible. |
Description
The Quarkus handlers for the SmallRye Health are blocking request handlers.
This requires them to enqueue in the blocking queue even for the simplest non-blocking requests, which might delay them if there is a high load.
For the Keycloak project, a simple liveness probe is all-local, and there is no need to queue the request. So the request should return the result immediately. We're experimenting with limiting the queue of the executor pool for load shedding, which would then shed also the liveness probes, which is undesired.
Implementation ideas
SmallRye Health now supports async responses:
https://github.com/smallrye/smallrye-health/blob/25d4f0bd75f00054ad5adba103fecce5c83eecbd/implementation/src/main/java/io/smallrye/health/SmallRyeHealthReporter.java#L252-L256
I'll prepare a PR for this.
The text was updated successfully, but these errors were encountered: