High memory usage when using multiple custom readiness probes #32242
Unanswered
brunobastosg
asked this question in
Q&A
Replies: 2 comments 6 replies
-
/cc @evanchooly (kotlin), @geoand (kotlin) |
Beta Was this translation helpful? Give feedback.
0 replies
-
Very interesting... Could you add a small sample application that exhibits this behavior so we can check? |
Beta Was this translation helpful? Give feedback.
6 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi all. I've been struggling with this problem for quite some time now.
I have a simple Quarkus app (version 2.16.4.Final), written in Kotlin, with a single POST endpoint. This endpoint needs to call 5 other services (using Rest Client Reactive) to function properly. So I created custom readiness probes using
UrlHealthCheck
to check if they're up.However, when I do that, the memory keeps increasing until the pod is restarted with an OOMKilled. If I comment the custom readiness probes, then memory usage stays constant.
I also found that if I keep only one custom readiness probe, memory usage also stays constant (apparently). But as soon as I add an extra readiness probe, then it starts increasing.
The graph below shows this behaviour:
Previously, the readiness probes where implemented as below (a base class and the others inherit from it):
Then I changed the base class to an
AsyncHealthCheck
to see if it improved things (it didn't).And finally, I moved everything to a single class, and annotated the methods instead of the class:
But the problem still persists.
I thought it could be a bug in Quarkus Smallrye Health. But I added extra custom readiness probes to another existing Quarkus project (also using 2.16.4.Final), and the problem didn't occur.
Oh, and I forgot to mention that when memory increases, both heap and non-heap memory usage stays low. So the issue appears to be in native memory. I enabled native memory tracking but couldn't find anything.
So, what I'd like to know is:
1 - Is anything wrong with the custom readiness probes' code?
2 - Is there anything I could check on my app's code to find the root cause of the problem?
Thanks in advance!
Beta Was this translation helpful? Give feedback.
All reactions