grpc 客户端报错: connection reset by peer

beibei · 2019-05-09 19:42:16 · 2776 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-05-09 19:42:16 的主题,其中的信息可能已经有所发展或是发生改变。

在k8s 上部署golang 的 grcp 服务端, 客户端是 php grpc 扩展 问题 : 客户端 connction reset by peer 的情况 , 利用了tcp本身的keepalive 包来保活,也修改了 net.ipv4.tcp_keepalive_time 等参数,但是还会频繁出现断连的问题,

func main() {
    grpcServer := grpc.NewServer(
        grpc.KeepaliveParams(keepalive.ServerParameters{Time: 600 * time.Second}),
        grpc.MaxConcurrentStreams(10000),
    )

    protoc.RegisterTServiceServer(grpcServer, new(handle.TImpl))
    reflection.Register(grpcServer)

    addr := startcfg.GetLisAddr()
    lis, err := net.Listen("tcp4", addr)
    if err != nil {
        panic(err)
    }

    grpcServer.Serve(lis)
}

pod中内核参数

sysctl -a|grep tcp_keepalive
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 10
net.ipv4.tcp_keepalive_time = 600
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"

机器上的 值也改了,求大佬给出一些思路


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2776 次点击  
加入收藏 微博
2 回复  |  直到 2019-05-10 11:32:09
beibei
beibei · #1 · 6年之前

服务端本省的包比较多,又经过了一曾代理,很难区分keepalive 包,并且代理也不会转发keepalive 包,不知道怎么 在client---proxy 之间保活?

didadi
didadi · #2 · 6年之前

是连接数上去之后出现,还是少连接数的情况下也会出现?

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传