grpc-go: Severe performance regression when using ServeHTTP
Extracting from discussion in #549. See https://github.com/cockroachdb/rpc-bench; relevant parts as of this writing:
name time/op
GRPCServe_1K-4 72.6µs ±10%
GRPCServe_64K-4 785µs ± 8%
GRPCServeHTTP_1K-4 178µs ± 2%
GRPCServeHTTP_64K-4 1.32ms ± 2%
name speed
GRPCServe_1K-4 28.3MB/s ± 9%
GRPCServe_64K-4 167MB/s ± 7%
GRPCServeHTTP_1K-4 11.5MB/s ± 2%
GRPCServeHTTP_64K-4 99.4MB/s ± 2%
name alloc/op
GRPCServe_1K-4 15.6kB ± 0%
GRPCServe_64K-4 711kB ± 0%
GRPCServeHTTP_1K-4 88.5kB ± 0%
GRPCServeHTTP_64K-4 801kB ± 0%
name allocs/op
GRPCServe_1K-4 96.0 ± 0%
GRPCServe_64K-4 162 ± 0%
GRPCServeHTTP_1K-4 166 ± 0%
GRPCServeHTTP_64K-4 671 ± 0%
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Reactions: 6
- Comments: 25 (15 by maintainers)
Commits related to this issue
- automate-gateway: cleanup GRPC/HTTP multiplexing cruft This was carried over from some ancient grpc-gateway example code[1]; and we're not exposing the GRPC API that way right now. Using (*grpc.Serv... — committed to chef/automate by srenatus 5 years ago
- automate-gateway: cleanup GRPC/HTTP multiplexing cruft This was carried over from some ancient grpc-gateway example code[1]; and we're not exposing the GRPC API that way right now. Using (*grpc.Serv... — committed to chef/automate by srenatus 5 years ago
- automate-gateway: cleanup GRPC/HTTP multiplexing cruft (#402) * automate-gateway: cleanup GRPC/HTTP multiplexing cruft This was carried over from some ancient grpc-gateway example code[1]; and we... — committed to chef/automate by srenatus 5 years ago
@tamird, the grpc-go team is undergoing a changing of the guard at the moment so this isn’t much of a priority.
And I don’t officially work on grpc-go. It’s not surprising that ServeHTTP is slower considering it’s shoehorned into the existing ServerTransport interface somewhat awkwardly.
I started working on a new design for all of grpc-go in https://github.com/bradfitz/grpc-go but it’s not ready yet for wider discussion or testing. It was mostly a proof of concept. But it’s something I intend to get back to. @philips et al at CoreOS are also interested.
Is there any update on this?
Closing due to lack of activity and priority.
This issue is labeled as requiring an update from the reporter, and no update has been received after 7 days. If no update is provided in the next 7 days, this issue will be automatically closed.