如何解决通过 nginx 的 grpc_pass 并发请求失败
通过Nginx并发发送grpc请求时,在客户端收到:
Caused by: io.netty.handler.codec.http2.Http2Exception$StreamException: Cannot create stream 2015 greater than Last-Stream-ID 2001 from GOAWAY.
at io.netty.handler.codec.http2.Http2Exception.streamError(Http2Exception.java:147)
at io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultEndpoint.checkNewStreamAllowed(DefaultHttp2Connection.java:874)
at io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultEndpoint.createStream(DefaultHttp2Connection.java:748)
at io.netty.handler.codec.http2.DefaultHttp2Connection$DefaultEndpoint.createStream(DefaultHttp2Connection.java:668)
at io.netty.handler.codec.http2.DefaultHttp2ConnectionEncoder.writeHeaders0(DefaultHttp2ConnectionEncoder.java:201)
at io.netty.handler.codec.http2.DefaultHttp2ConnectionEncoder.writeHeaders(DefaultHttp2ConnectionEncoder.java:167)
at io.netty.handler.codec.http2.DecoratingHttp2FrameWriter.writeHeaders(DecoratingHttp2FrameWriter.java:53)
at io.netty.handler.codec.http2.StreamBufferingEncoder.writeHeaders(StreamBufferingEncoder.java:153)
at io.netty.handler.codec.http2.StreamBufferingEncoder.writeHeaders(StreamBufferingEncoder.java:141)
at io.grpc.netty.NettyClientHandler.createStreamTraced(NettyClientHandler.java:579)
at io.grpc.netty.NettyClientHandler.createStream(NettyClientHandler.java:562)
at io.grpc.netty.NettyClientHandler.write(NettyClientHandler.java:323)
不使用Nginx直接请求grpc服务器时,没有报错。
解决方法
http://nginx.org/en/docs/http/ngx_http_v2_module.html
行为由 http2 模块控制,而不是由 grpc 模块控制:
http2_recv_buffer_size 1024k;
http2_max_requests 2147483647;
http2_max_concurrent_streams 200;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。