How we avoided significant size growth for VictoriaTraces executable (from 20MB to 28MB, +40%) while adding support for receiving traces via gRPC. This also reduced CPU usage and improved performance for traces' ingestion over gRPC.
In #VictoriaTraces, we run an HTTP2 server to handle gRPC calls, instead of using the common gRPC-Go package for a gRPC server. Not trying to persuade others to do so, but we did find it fun. The general idea is to avoid including things you don't need. victoriametrics.com/blog/ope…

Oct 29, 2025 · 11:13 AM UTC

4
4
61
Replying to @valyala
Not sure if this is purposeful, but the text sizes in the code snippet is a bit funky
2
1
Hmm, I have normal text there (see the screenshot below). Could you file a bugreport at github.com/VictoriaMetrics/V… with the used browser version and the screenshot, so we could investigate and fix it?
3
2
Replying to @valyala
I never liked grpc-go. It's so cool you found a way around it!
3
Replying to @valyala
20mb to 28mb for gRPC + reduced cpu is peak efficiency. that +40% is a trophy, not bloat.
Replying to @valyala
I remember using the same pattern when contributing to vmagent to add Nomad service discovery. Really useful. Most of the times you don't need 90% of the entire bundle to do 10% of the things.
4