Armeria gRPC performance analysis
See original GitHub issueI noticed some reasonably large differences in performance between armeria-grpc and upstream grpc on the same business logic and did some profiling - want to capture them and maybe start an investigation. My initial suspicion is flushing on every write?
I’ve attached VisualVm profiles, and here’s a screenshot of hot spots in the armeria version. I don’t believe writevAddress
, readAddress
, invokeFlush0
are supposed to be so high here.
Issue Analytics
- State:
- Created 6 years ago
- Reactions:4
- Comments:26 (1 by maintainers)
Top Results From Across the Web
Running a gRPC service — Armeria documentation
Armeria supports gRPC server reflection - just add an instance of ProtoReflectionService to your server. import io.grpc.
Read more >Armeria: The Only Thrift/gRPC/REST Microservice Framework ...
The founder of Netty introduces a new microservice framework ' Armeria '. It is unique because it 1) has Netty-based high-perf HTTP/2 ...
Read more >GrpcServiceBuilder - armeria-javadoc 0.99.9 javadoc
Constructs a GrpcService to serve gRPC services from within Armeria. Method Summary ... Can improve performance when working with very large (i.e., ...
Read more >Quick intro to armeria - SlideShare
0.Final • core, thrift ... gRPC support • DocService for gRPC since 0.40.0 • gRPC enhancements since 0.44. (Dynamic) Multi-backend Support • ZooKeeper-based ......
Read more >Comparing gRPC performance across different technologies
gRPC Performance Test Summary · Interpreted languages like Python, PHP and Ruby don't perform well and should be used with care if you...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Oops, I clicked down(👎) by mistake. 😅
Mentioned it in #2295, but one aspect of having competitive gRPC performance will be to optimize as much of the functionality we have that is not used by RPC frameworks, for example routing.
One idea I haven’t explored much is if it’s possible to have an especially optimized code path when we know the server does not support complex routing. For example, it should be possible for this object to have less memory footprint when not using all the different features
https://github.com/line/armeria/blob/master/core/src/main/java/com/linecorp/armeria/server/DefaultRoutingContext.java#L52
Just a brainstorm 😃 /cc @trustin @minwoox @ikhoon