
运行环境 OS:ubuntu 18.04 nginx:1.17.10 grpcio:1.31
问题描述: 用 nginx 做了 grpc 服务的转发 /负载均衡,client 并发调用时随机出现 status = StatusCode.UNAVAILABLE details = "GOAWAY received" 同样并发请求数量,直接调用 grpc 服务器地址,不通过 nginx 转发则不会出现问题,应该不是服务端设置的问题。
nginx 配置:
upstream grpcservers { server xxx.xxx.xxx.1:50051; server xxx.xxx.xxx.2:50051; }
server{ listen 8080 http2;
location /foo. { grpc_pass grpc://grpcservers; } }
请教各位大佬有何建议。
1 joesonw 2020 年 9 月 17 日 client maxRetry |
2 vanis OP 大佬能展开说下么?查了下 nginx 的文档,只发现了 grpc_next_upstream_tries 这个选项跟 retry 有关,设置了下没反应。 |
3 14v45mJPBYJW8dT7 2020 年 9 月 17 日 之前我们 nginx + grpc 压测时也出现过很多解决不了的连接失败问题,设置 max request timeout 各种相关的参数都尝试过 后来换了 envoy |
4 JmmBite 2020 年 9 月 17 日 |
5 godgrp 2020 年 9 月 17 日 location 不能用 /foo , 你可以去看下 grpc 的请求路径是什么,可以发现他的请求路径类似是 “/你的服务 package 名 /...”,一种你按你的服务名去转发,另一种使用 nginx 的四层转发 |
6 puncsky 2020 年 9 月 18 日 envoy +1 |
8 vanis OP |
9 vanis OP @rimutuyuan 感谢经验分享,貌似只能弃坑了。 |
10 guozilong110 2020 年 10 月 23 日 最近我也在调整 nginx 代理 grpc, 突然想到, 为什么用 nginx, 程序直接直接 grpc 调用不是就很好了吗 |