The JVM needs time to warm up. 1 second is hilariously short for a performance test. In some not-so-serous benchmarking I warm up the JVM for 120s, then run a few minutes of load to let things normalize.
You could probably use multiple connections from client to server, unless you're looking for a blocking single connection test? There are probably other things to tweak or tune, but posting code snippets isn't a great way to allow someone to help. I'd recommend posting a full example to github. .laz On Thursday, October 23, 2025 at 1:13:55 AM UTC+11 Mansoor Shaik wrote: > Dear gRPC Team, > > I hope you are doing well. > > I am testing gRPC Java performance using the official HelloWorld example > (Maven-based) from the gRPC GitHub repository: > > 🔗 https://grpc.io/docs/languages/java/quickstart/ > > The project runs correctly, and I made a small modification in the client > code to measure how many RPC calls can be executed within 1 second — just > to check the performance benchmark. > > > > Setup Details > > - Language: Java > - Java Version: 24 > - Build Tool: Maven > - IDE: Spring Tool Suite (STS) > - Operating System: Windows 11 > - Memory Allocation: 64 MB each (client and server) > - Connection: localhost > > > > Modification > > I modified the client to run a simple loop that repeatedly calls > sayHello() for 1 second and counts the total number of RPCs executed. > > Below is the modified section of the code in the client: > > > > long startTime = System.currentTimeMillis(); > int callCount = 0; > > while (System.currentTimeMillis() - startTime < 1000) { > blockingStub.sayHello(request); > callCount++; > } > > long maxMem = Runtime.getRuntime().maxMemory() / (1024 * 1024); > System.out.println("In 1 second, gRPC method called " + callCount + > " times, allocated memory = " + maxMem + " MB"); > > Everything else in the project (server and client) is the same as the > official gRPC example. > > > > Result > > - gRPC Java: 200–500 calls/second > > > > I have attached performance client file, please review it.. > HelloWorldPerformaceClient > <https://1drv.ms/u/c/199210faefceddf2/EaR6SeKrgNNNqBA300YdQJ4BIgTG8RfBQSCp4cUv6GloGA?e=8x7mLp> > On Wednesday, October 22, 2025 at 11:46:13 AM UTC+5:30 Kannan Jayaprakasam > wrote: > >> Are you reusing the ManagedChannel for making all the RPC's or recreating >> it for each RPC? Reusing the channel is the way to go since the connections >> don't need to be reestablished. >> >> On Thursday, October 16, 2025 at 6:40:21 PM UTC+5:30 Mansoor Shaik wrote: >> >>> Hello gRPC Team, >>> >>> >>> I hope you are doing well. >>> >>> I am currently working on evaluating gRPC Java performance as part of a >>> sample setup, and I wanted to share an issue I’m facing that seems >>> performance-related. >>> >>> >>> >>> I have implemented a minimal gRPC server and client setup using Java + >>> Maven, following the official example provided on the gRPC Java >>> documentation site( https://grpc.io/docs/languages/java/quickstart/) The >>> build and execution both complete successfully — however, the observed >>> performance is much lower than expected. >>> >>> >>> >>> When I run the server and client locally on the same machine, I notice >>> that in one second, the client can only perform around 200–500 gRPC >>> synchronous calls using synchronous stubs. I expected much higher >>> throughput, given that gRPC is designed to provide significant performance >>> benefits compared to RMI-based APIs. >>> >>> >>> >>> As a comparison, when I tested a Java RMI-based setup under similar >>> conditions, benchmark results it achieved 7,684 calls per second >>> >>> >>> >>> I’ve ensured that the implementation strictly follows the example code, >>> including .proto generation and Maven dependency configuration. >>> >>> Below are the technical details and the steps I’ve already verified: >>> >>> >>> >>> Environment Details >>> >>> - Language: Java >>> - Build Tool: Maven >>> - Framework: gRPC Java (sample from official documentation) >>> - Java Version: 24 >>> - Operating System: Windows 11 >>> - Hardware: 8 GB RAM, Intel i5 Processor >>> >>> -- ** ** <https://www.canva.com/> Empowering the world to design We're hiring, apply here <https://www.canva.com/careers/>! Check out the latest news and learnings from our team on the Canva Newsroom <https://www.canva.com/newsroom/news/>. <https://twitter.com/canva> <https://facebook.com/canva> <https://au.linkedin.com/company/canva> <https://twitter.com/canva> <https://facebook.com/canva> <https://www.linkedin.com/company/canva> <https://instagram.com/canva> -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/grpc-io/d039070c-4bc7-41c4-9f48-bf417f6f364dn%40googlegroups.com.
