question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Armeria gRPC performance analysis

See original GitHub issue

I 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.

image

visualvm-profiles.tar.gz

Issue Analytics

  • State:open
  • Created 6 years ago
  • Reactions:4
  • Comments:26 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
ikhooncommented, Dec 4, 2019

Oops, I clicked down(👎) by mistake. 😅

1reaction
anuraagacommented, Dec 4, 2019

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

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found