-
Notifications
You must be signed in to change notification settings - Fork 892
Description
Hi team,
I have a question regarding memory usage in a Go-based gRPC server managed by Agones.
What am I trying to understand?
- Is the steady increase in memory usage over time expected behavior when calling agones.dev.sdk.Health() every second?
- Or is there something wrong with the way we’re using the Agones SDK or gRPC client?
What I did
We deployed a lightweight gRPC server written in Go inside an Agones-managed Pod. The only thing the server does is call the Agones SDK’s Health() function once every second. No other game logic or load is running.
We observed the container’s memory usage over time using Datadog and found that memory increases linearly at a rate of approximately 1 to 3 MiB per hour.
When we commented out the Health() call, the memory growth stopped.
We also reproduced this same behavior in a C++ server calling the equivalent Agones SDK health function.
Why this matters
We intend to run these Pods continuously for several days or weeks, and this rate of memory growth is not sustainable. We'd like to know if:
- Is this a known behavior of the Agones SDK or gRPC?
- Or if we should change our usage pattern or perform cleanup
Environment
- Kubernetes: EKS 1.32
- Agones: v1.48
- Language: Go 1.23.10
- gRPC: v1.73.0
- SDK Usage: agones.dev/sdk-go and agones.dev/sdk-cpp
Any insights, recommendations, or confirmation of expected behavior would be greatly appreciated.
Thank you!