Cloud王
(Hacker Yons Hv5m)
2023 年1 月 6 日 02:14
1
【 TiDB 使用环境】生产环境
【 TiDB 版本】v4.0.15,v5.4.3
【复现路径】
cdc使用sasl用户名密码同步kafka,创建语句为:
cdc cli changefeed create --pd=http://XXX:2379 --start-ts=XXXXX --sink-uri=“kafka://XXX:9092/topicname?partition-num=3&protocol=canal-json&replication-factor=3&sasl-user=XXX&sasl-password=XXX&sasl-mechanism=SCRAM-SHA-256” --changefeed-id=“XXX” --config=./XXX.toml
【遇到的问题:问题现象及影响】
1、问题描述
同步任务创建完成后,kafka的日志出现大量的如下内容:
INFO Principal = User:XXX is Denied Operation = Describe from host = xxx.xxx.xxx.xxx on resource = Topic:LITERAL:XXX (kafka.authorizer.logger)
即cdc节点会大量循环Describe kafka中的所有topic。目前kafka中topic数量很多,大量Describe 造成了性能问题。
在v4.0.15(正式环境)和v5.4.3(测试环境),创建的同步任务都会出现该问题。
2、问题调查
如果cdc使用golang的sarama实现,并且没有配置conf.Metadata.Full=false,则会出现该问题:
https://github.com/Shopify/sarama/issues/722
这里想确认一下:
1、cdc是否使用了golang的sarama
2、如果使用了sarama的话,是否未配置conf.Metadata.Full=false
3、以上两个都没有的话,这个问题会是啥原因导致的
neilshen
(Neil Shen)
2023 年1 月 6 日 09:10
2
Cloud王:
1、cdc是否使用了golang的sarama
使用了。
没有配置。
相关代码下面的链接中,欢迎提 PR 贡献解决方案~
// DeriveTopicConfig derive a `topicConfig` from the `Config`
func (c *Config) DeriveTopicConfig() *AutoCreateTopicConfig {
return &AutoCreateTopicConfig{
AutoCreate: c.AutoCreate,
PartitionNum: c.PartitionNum,
ReplicationFactor: c.ReplicationFactor,
}
}
// NewSaramaConfig return the default config and set the according version and metrics
func NewSaramaConfig(ctx context.Context, c *Config) (*sarama.Config, error) {
config := sarama.NewConfig()
version, err := sarama.ParseKafkaVersion(c.Version)
if err != nil {
return nil, cerror.WrapError(cerror.ErrKafkaInvalidVersion, err)
}
var role string
if contextutil.IsOwnerFromCtx(ctx) {
role = "owner"
} else {
Cloud王
(Hacker Yons Hv5m)
2023 年1 月 6 日 09:50
4
请问cdc里有没有啥配置,能够让golang的conf.Metadata.Full=false这个配置生效呢?
neilshen
(Neil Shen)
2023 年1 月 6 日 10:03
5
没有这样的配置😥,在这个帖子之前我们还没遇到过这样的情况。
目前只能调整代码增加这配置。
system
(system)
关闭
2023 年3 月 7 日 10:03
6
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。