brpc icon indicating copy to clipboard operation
brpc copied to clipboard

使用apisix作为网关, brpc作为grpc server, 只有链接的第一个请求可以成功, 后续报错终止链接

Open jiangdongzi opened this issue 2 years ago • 8 comments

Describe the bug (描述bug) 报错: upstream sent invalid http2 table index: 63

To Reproduce (复现方法) apisix作为grpc网关., brpc作为grpc server, 给apisix发送grpc请求即可复现

Expected behavior (期望行为) 正常返回请求, 而不是只有链接的第一个请求可以正确返回

Versions (各种版本) OS: 公司测试机与自己的机器都可以复现, centos与ubuntu 一般的os都可以复现 Compiler: 同上 brpc: 新旧版本均可复现 protobuf: 同上

Additional context/screenshots (更多上下文/截图)

apisix日志 image

brpc client日志 image

jiangdongzi avatar Mar 23 '23 03:03 jiangdongzi

请问解决了么?看起来像是使用方式的问题

Huixxi avatar Apr 09 '23 06:04 Huixxi

请问解决了么?看起来像是使用方式的问题

还没, 直连没问题, 使用grpc作为server也没问题, 就是使用apisix作为grpc网关会出问题

jiangdongzi avatar Apr 10 '23 11:04 jiangdongzi

请问解决了么?看起来像是使用方式的问题

还没, 直连没问题, 使用grpc作为server也没问题, 就是使用apisix作为grpc网关会出问题

网上似乎有个类似的case https://github.com/Kong/kong/issues/8316, 感觉是apisix的问题😅

Huixxi avatar Apr 10 '23 12:04 Huixxi

请问解决了么?看起来像是使用方式的问题

还没, 直连没问题, 使用grpc作为server也没问题, 就是使用apisix作为grpc网关会出问题

网上似乎有个类似的case https://github.com/Kong/kong/issues/8316, 感觉是apisix的问题😅

链接没有内容, grpc本身作为server没问题啊, 感觉是brpc作为grpc server 没完全适配grpc?

jiangdongzi avatar Apr 13 '23 03:04 jiangdongzi

建议tcpdump在apisix层抓包,从apisix的日志上看是brpc的h2pack实现和apisix的交互上存在一些问题, 您可以使用

tcpdump -i any port {brpc_port} -w /tmp/trace.cap

获取trace.cap 提供更多的信息参考

Lynskylate avatar May 21 '23 11:05 Lynskylate

You need to turn keepalive off

Caibreeze0908 avatar May 25 '23 12:05 Caibreeze0908

keepalive

请问解决了么?看起来像是使用方式的问题

还没, 直连没问题, 使用grpc作为server也没问题, 就是使用apisix作为grpc网关会出问题

网上似乎有个类似的case https://github.com/Kong/kong/issues/8316, 感觉是apisix的问题😅

链接没有内容, grpc本身作为server没问题啊, 感觉是brpc作为grpc server 没完全适配grpc?

有进展了么,朋友

982945902 avatar Jun 21 '23 10:06 982945902

config.yaml change keepalive: 320 to keepalive: 1 change keepalive_requests: 100000 to keepalive_requests: 1 change keepalive_timeout: 10s to keepalive_timeout: 0

Caibreeze0908 avatar Sep 27 '23 10:09 Caibreeze0908