6 ms·
Found the root cause from https://github.com/grpc/grpc-go/commit/383b1143 https://github.com/grpc/grpc-go/commit/383b1143 (original issue: https://github.com/gr
by throwdbaaway 4y ago
Found the root cause from https://github.com/grpc/grpc-go/commit/383b1143 https://github.com/grpc/grpc-go/commit/383b1143 (original issue: https://github.com/grpc/grpc-go/issues/75 https://github.com/grpc/grpc-go/issues/75):
// Note that ServeHTTP uses Go's HTTP/2 server implementation which is
// totally separate from grpc-go's HTTP/2 server. Performance and
// features may vary between the two paths.
The lightstep collector serves both gRPC and HTTP traffic on the same port, using the ServeHTTP method from the comment above. Unfortunately, Go's HTTP/2 server doesn't have the improvements mentioned in https://grpc.io/blog/grpc-go-perf-improvements/#reducing-flush-syscalls https://grpc.io/blog/grpc-go-perf-improvements/#reducing-flu.... The frequent flushes mean it can suffer from high latency with Nagle enabled, or from high packet overhead with Nagle disabled.
tl;dr: blame bradfitz instead :)