在k8s 上部署golang 的 grcp 服务端,

客户端是 php grpc 扩展

问题 : 客户端 connction reset by peer 的情况 ,

利用了tcp本身的keepalive 包来保活,也修改了 net.ipv4.tcp_keepalive_time 等参数,但是还会频繁出现断连的问题,

```go

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中内核参数

```shell

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"

```

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

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐