Commit Graph

311 Commits

Author SHA1 Message Date
Alexey Ivanov 6eabd7e183
server: use least-requests loadbalancer for workers (#6004) 2023-04-11 11:34:42 -07:00
Zach Reyes 55d8783479
gcp/observability: Link logs and traces by logging Trace and Span IDs (#6056) 2023-03-09 13:56:23 -05:00
Zach Reyes f31168468f
stats/opencensus: New uncompressed metrics and align with tracing spec (#6051) 2023-03-03 17:21:40 -05:00
Zach Reyes cc320bf820
grpc: Log server trailers before writing status (#6076) 2023-03-03 17:20:54 -05:00
Ronak Jain 0954097276
server: expose API to set send compressor (#5744)
Fixes https://github.com/grpc/grpc-go/issues/5792
2023-01-31 13:27:34 -08:00
Zach Reyes 6a707eb1bb
client: add an option to disable global dial options (#5990) 2023-01-27 17:06:29 -05:00
Mikhail Mazurskiy 379a2f676c
*: add missing colon to errorf messages to improve readability (#5911) 2023-01-17 16:11:47 -08:00
Sean Barag 2f413c4548
transport/http2: use HTTP 400 for bad requests instead of 500 (#5804) 2022-12-13 11:31:23 -08:00
Zach Reyes a9709c3f8c
Added logs for reasons causing connection and transport close (#5840) 2022-12-08 19:44:23 -05:00
Theodore Salvo 0fe49e823f
grpc: Improve documentation of read/write buffer size server and dial options (#5800)
Fixes https://github.com/grpc/grpc-go/issues/5798
2022-11-28 10:17:00 -08:00
Yimin Chen adfb9155e4
server: fix ChainUnaryInterceptor and ChainStreamInterceptor to allow retrying handlers (#5666) 2022-11-22 12:58:04 -08:00
Zach Reyes f52b910b10
o11y: Fixed o11y bug (#5720) 2022-10-14 14:48:39 -04:00
Zach Reyes 5fc798be17
Add binary logger option for client and server (#5675)
* Add binary logger option for client and server
2022-10-06 13:36:05 -04:00
Easwar Swaminathan aee9f0ed17
orca: server side custom metrics implementation (#5531) 2022-09-01 15:58:29 -07:00
Doug Fawley 02f1a7ac92
grpc: prevent a nil stats handler from causing a panic (#5543) 2022-07-29 10:45:21 -07:00
Juraci Paixão Kröhling 6dd40ad6e6
Change the log-level when a new ServerTransport cannot be created (#5524) 2022-07-19 15:18:52 -07:00
Lidi Zheng ea86bf7497
stats: add support for multiple stats handlers in a single client or server (#5347) 2022-06-03 09:15:50 -07:00
Lidi Zheng 13b378bc45
internal: add global DialOptions and ServerOptions for all clients and servers (#5352) 2022-06-02 16:17:01 -07:00
Doug Fawley 9711b148c4
server: clarify documentation around setting and sending headers and ServerStream errors (#5302) 2022-04-08 13:11:40 -07:00
Easwar Swaminathan a73725f42d
channelz: include channelz identifier in logs (#5192) 2022-02-23 07:30:06 -08:00
Menghan Li 61a6a06b88
server: handle context errors returned by service handler (#5156) 2022-01-26 11:02:23 -08:00
Doug Fawley f068a13ef0
server: add missing conn.Close if the connection dies before reading the HTTP/2 preface (#4837) 2021-10-04 11:22:00 -07:00
Evan Jones e6246c22eb
server: optimize chain interceptors (-1 allocation, -10% time/call) (#4746) 2021-09-22 13:30:27 -07:00
Zach Reyes 606403ded2
transport: fix log spam from Server Authentication Handshake errors (#4798)
* transport: fix log spam from Server Authentication Handshake errors
2021-09-21 19:33:18 -04:00
Zach Reyes c361e9ea16
Move Server Credentials Handshake to transport (#4692)
* Move Server Credentials Handshake to transport
2021-08-23 19:39:14 -04:00
吴亲库里 52cea24534
server: fix net.conn closed twice (#4663) 2021-08-18 13:31:22 -07:00
Menghan Li c052940bcd
server: fix leaked net.Conn (#4633)
This happens when NewServerTransport() returns nil, nil. The rawConn is
closed when the transport is closed, which will never happen in this
case (since the returned transport is nil).
2021-08-02 13:05:02 -07:00
Aliaksandr Mianzhynski 9b2fa9f8d3
server: improve chained interceptors performance (#4524) 2021-06-24 22:11:47 -07:00
Iskandarov Lev 4faa31f0a5
stats: add stream info inside stats.Begin (#4533) 2021-06-18 13:21:07 -07:00
Easwar Swaminathan 174b1c28af
internal/transport: skip log on EOF when reading client preface (#4458) 2021-06-02 16:47:35 -07:00
Easwar Swaminathan 728364accf
server: return UNIMPLEMENTED on receipt of malformed method name (#4464) 2021-05-24 17:30:40 -07:00
Ehsan Afzali a8e85e0d57
server: allow PreparedMsgs to work for server streams (#3480) 2021-05-21 15:54:24 -07:00
Doug Fawley 328b1d171a
transport: allow InTapHandle to return status errors (#4365) 2021-05-07 14:37:52 -07:00
Mikhail Mazurskiy d2d6bdae07
server: add ForceServerCodec() to set a custom encoding.Codec on the server (#4205) 2021-05-06 09:40:54 -07:00
Easwar Swaminathan 52a707c0da
xds: serving mode changes outlined in gRFC A36 (#4328) 2021-04-26 14:29:06 -07:00
Easwar Swaminathan 2fad6bf4da
xds: Implement server-side security (#4092) 2020-12-16 10:27:18 -08:00
Gaurav Gahlot d9063e7af3
standardized experimental warnings (#3917) 2020-10-02 09:11:08 -07:00
Stephen L. White e6c98a478e
stats: include message header in stats.InPayload.WireLength (#3886) 2020-09-25 10:06:54 -07:00
Doug Fawley 44d73dff99
cmd/protoc-gen-go-grpc: rework service registration (#3828) 2020-08-25 09:28:01 -07:00
Garrett Gutierrez 0e72e09474
server: prevent hang in Go HTTP transport in some error cases (#3833) 2020-08-21 18:04:04 -07:00
Easwar Swaminathan f30caa90ad
server: Add ServiceRegistrar interface. (#3816) 2020-08-14 10:26:20 -07:00
Easwar Swaminathan a5514c9e50
grpc: Minor refactor in server code. (#3779) 2020-08-06 13:10:09 -07:00
Menghan Li c95dc4da23
doc: mark CustomCodec as deprecated (#3698) 2020-06-26 12:56:03 -07:00
Garrett Gutierrez 506b773066
Implemented component logging (#3617) 2020-06-26 12:04:47 -07:00
IceberGu 636b0d84dd
internal: fix typos (#3581) 2020-05-19 19:24:38 -07:00
Adhityaa Chandrasekar a0cdc21e61
server.go: use worker goroutines for fewer stack allocations (#3204)
Currently (go1.13.4), the default stack size for newly spawned
goroutines is 2048 bytes. This is insufficient when processing gRPC
requests as the we often require more than 4 KiB stacks. This causes the
Go runtime to call runtime.morestack at least twice per RPC, which
causes performance to suffer needlessly as stack reallocations require
all sorts of internal work such as changing pointers to point to new
addresses.

Since this stack growth is guaranteed to happen at least twice per RPC,
reusing goroutines gives us two wins:

  1. The stack is already grown to 8 KiB after the first RPC, so
     subsequent RPCs do not call runtime.morestack.
  2. We eliminate the need to spawn a new goroutine for each request
     (even though they're relatively inexpensive).

Performance improves across the board. The improvement is especially
visible in small, unary requests as the overhead of stack reallocation
is higher, percentage-wise. QPS is up anywhere between 3% and 5%
depending on the number of concurrent RPC requests in flight. Latency is
down ~3%. There is even a 1% decrease in memory footprint in some cases,
though that is an unintended, but happy coincidence.

unary-networkMode_none-bufConn_false-keepalive_false-benchTime_1m0s-trace_false-latency_0s-kbps_0-MTU_0-maxConcurrentCalls_8-reqSize_1B-respSize_1B-compressor_off-channelz_false-preloader_false
               Title       Before        After Percentage
            TotalOps      2613512      2701705     3.37%
             SendOps            0            0      NaN%
             RecvOps            0            0      NaN%
            Bytes/op      8657.00      8654.17    -0.03%
           Allocs/op       173.37       173.28     0.00%
             ReqT/op    348468.27    360227.33     3.37%
            RespT/op    348468.27    360227.33     3.37%
            50th-Lat    174.601µs    167.378µs    -4.14%
            90th-Lat    233.132µs    229.087µs    -1.74%
            99th-Lat     438.98µs    441.857µs     0.66%
             Avg-Lat    183.263µs     177.26µs    -3.28%
2020-04-23 15:50:02 -07:00
Garrett Gutierrez fff75ae40f
channelz: log on channelz trace events and trace on channelz relevant logs. (#3329)
channelz: log on channelz trace events and trace on channelz relevant logs. (#3329)
2020-02-14 10:11:26 -08:00
Doug Fawley 6b9bf4296e
Revert "profiling: add hooks within grpc (#3159)" (#3378)
This reverts commit 83263d17f7.
2020-02-14 07:56:46 -08:00
tukeJonny d0235e4d6b
interceptor: new APIs for chaining server interceptors. (#3336) 2020-02-12 11:11:50 -08:00
Adhityaa Chandrasekar 83263d17f7
profiling: add hooks within grpc (#3159) 2020-02-12 11:10:44 -08:00