You are making the sync call. Is is possible for you to try ClientCalls.asyncUnaryCall and share the result. I anticipate the result will be much better.
Also instead of 1sec, can we do for 10 second and then divide the result by 10. I would be happy to discuss with you further on these details. Thanks, Shubham Raj On Friday, October 24, 2025 at 9:29:49 PM UTC+5:30 Adam Lazur wrote: > 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> [image: > https://www.linkedin.com/company/canva] > <https://www.linkedin.com/company/canva> [image: > https://instagram.com/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/da5a54b2-40ae-449e-b4d4-d19bc847f257n%40googlegroups.com.
