微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过 nginx 的 grpc_pass 并发请求失败

如何解决通过 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 举报,一经查实,本站将立刻删除。