I trying to benchmark gprc:
*Server: 
Configuration:
EventLoopGroup acceptGroup = new EpollEventLoopGroup(1); // chỉ dùng 1 boss 
thread để accept kết nối
EventLoopGroup selectorGroup = new EpollEventLoopGroup(4);
NettyServerBuilder builder = NettyServerBuilder.forPort(port)
.addService(new GrpcHandler())
.bossEventLoopGroup(acceptGroup)
.workerEventLoopGroup(selectorGroup)
.channelType(EpollServerSocketChannel.class)
.withChildOption(ChannelOption.TCP_NODELAY, true)
.permitKeepAliveWithoutCalls(true)
.permitKeepAliveTime(5, TimeUnit.SECONDS)
.keepAliveTimeout(10, TimeUnit.SECONDS)
;
ExecutorService rpcExecutor = Executors.newFixedThreadPool(12);
builder.executor(rpcExecutor);

server = builder.build();

*Client:
Configuration:
EventLoopGroup selectorGroup = new EpollEventLoopGroup(1);
channel = NettyChannelBuilder.forTarget(_serverHost)
.usePlaintext()
.eventLoopGroup(selectorGroup)
.channelType(EpollSocketChannel.class, InetSocketAddress.class)
.directExecutor()
.withOption(ChannelOption.TCP_NODELAY, true)
.build();

Client I try to run 12 thread concurrent to call blockingStub by this 
channel. Total request is 1000000 -> each thread call blocking 1000000 / 12 
req.

=> result about Throughput is low (~60000 req/s)and Latency is high.

I try to use Profiler of Intellij then I see this:
[image: image-2025-5-21_15-52-4.png]

=> I guess only 1 thread to handle I/O => bottleneck
Can you help me explain it or I config wrong in anywhere?

Thank and best regards,
LinhCN - Zalo

-- 
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/c3d89f78-71bd-420e-a295-9b0273bf4f36n%40googlegroups.com.

Reply via email to