PD 日志报错["transport: Got too many pings from the client, closing the connection."]

要让表妹让技术再回归测试一下是不是问题确实还存在

v6.5.3也报错

竟然还没有解决这个bug

低版本没有报错,应该的高版本增加了什么功能导致报错

我反馈一下给产研看看~

https://github.com/pingcap/tidb/issues/38983

应该是这个bug。
你可以看看是否也开启了topsql。

我没看明白,怎么设置能解决这个问题?

上面的可能不太对,没注意是pd的日志。

https://github.com/pingcap/tidb/issues/17870

20年的这个issue更像,报错的内容到,日志输出的行数都能对的上。

不过不应该出现在6.5这个版本上。

没有办法,是内部使用的一个gprc的包的配置问题。

简单来说就是 tidb和pd都使用了一个grpc的包,但是双方一个把某个属性设置为true,一个设置为false,这种感觉。

https://github.com/pingcap/tidb/pull/17885

Problem Summary:

In PD(etcd) server side, PermitWithoutStream values is false https://github.com/etcd-io/etcd/blob/master/embed/etcd.go#L641, means

and client sends ping when there are no active streams, server will send GOAWAY and close the connection.

but in TiDB client side, PermitWithoutStream values is true means

client sends keepalive pings even with no active RPCs

so, with those conflict configuration, grpc server side will count pingStrike with wrong value.

这个是生产集群报的,我的是v6.5.1 @OOO2 的版本是v6.5.3

应该对使用影响不大,grpc连接关了,还可以再开,应该不会对生产有啥影响。

不管是tidb还是pd的grpc设置问题,导致的这个错误,感觉对性能的影响都应该是比较小的。

没有开

1 个赞

有没有健康检测一类的ping造成的

https://github.com/search?q=org%3Apingcap%20PermitWithoutStream%20&type=code

目前已知的是PermitWithoutStream这个参数在etcd里面一直设置为false.所以和pd的etcdclient相关的设置应该要么不设置,要么就应该是false.

不过从整个库里面搜了下,还是能看到有不少地方是true.

在cdc和br里面能看到不少。不清楚有这个报错的同学,是否在使用cdc或者br这类的工具,可以观察一下是否和这两个组件有关。

相关 issue 可见:https://github.com/tikv/pd/issues/7182

如果方便,可以到 issue 里面补充一下复现的方式~
这样子更好排查问题

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。