【问题标题】:Kafka Elastic search sink connector showing high CPU usage显示高 CPU 使用率的 Kafka 弹性搜索接收器连接器
【发布时间】:2021-08-09 01:27:39
【问题描述】:

我在分布式模式(2 个实例)中使用弹性搜索接收器连接器。有 8 个任务和大约 20 到 25 个主题要下沉到弹性搜索。

即使没有要接收的记录,worker java 进程使用 xmx(4GB) 时也会显示 100% 的 CPU 使用率。

记录的端到端传输正常进行,但高 CPU 使用率是一个问题。

尝试了各种与时间相关的消费者设置(批量大小、最大轮询间隔)甚至启用了死信队列的容错,但都没有帮助。

我的设置:

 connector config
 {
    “name”: “elasticsearch-sink”,
    "config”: {
    “connector.class”: “io.confluent.connect.elasticsearch.ElasticsearchSinkConnector”,
    “tasks.max”: “8”,
    “topics.regex”:"(mytopics_\d+$)",
    “key.ignore”: “true”,
    “schema.ignore”: “true”,
    “connection.url”: “http://eshost:esport”,
    “type.name”: “kafka-connect”
}
}

工人设置:

bootstrap.servers=localhost:9094,localhost:9095
group.id=test-cluster
key.converter=org.apache.kafka.connect.storage.StringConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable=false
value.converter.schemas.enable=false
offset.storage.topic=connect-offsets
offset.storage.replication.factor=3
config.storage.topic=connect-configs
config.storage.replication.factor=3
status.storage.topic=connect-status
status.storage.replication.factor=3
status.storage.partitions=8
rest.port=9034
plugin.path=/pluginpath
log4j.rootLogger=DEBUG, stdout

我正在服务器级设置(64GB RAM 和 8 个 vCPU 内核)上尝试它,并且与 Kafka Broker 以及 Elasticsearch 服务器主机的连接良好。

任何指针都会有所帮助。

提前致谢。

【问题讨论】:

    标签: apache-kafka apache-kafka-connect


    【解决方案1】:

    配置看起来不错。您应该尝试两件事:

    • 将主题正则表达式切换为静态主题列表。正则表达式的怪异通常会导致 CPU 过高,因此请先排除这种情况。
    • 提高连接工作人员的日志记录级别 - 希望这会告诉您罪魁祸首。似乎在此处提高连接工作人员的日志记录级别的示例:https://stackoverflow.com/a/68579044/1335661

    根据您发布的日志文件,连接工作人员正在轮询代理并立即收到空响应,忽略提供的超时。这基本上是“忙于等待”,是 CPU 使用率高的原因。 此外,请求头中的元数据看起来很奇怪——主题列表是空的。 Kafka 连接内部主题中可能有垃圾。尝试清除这些主题 (https://docs.confluent.io/home/connect/userguide.html#kconnect-internal-topics) 或使用新的代理。

    【讨论】:

    • 感谢@Barak,我曾尝试使用扩展主题使用主题参数来排除它,甚至尝试使用单个主题。但没有帮助。
    • 我很早就提交了之前的评论:)感谢日志级别的链接。我看到很多此类消息,发送带有标头 RequestHeader(apiKey=FETCH, apiVersion=12, clientId=consumer-connect-cluster-test1-1, correlationId=304) 的 FETCH 请求和超时 30000 到节点 1001:FetchRequestData(clusterId =null,replicaId=-1,maxWaitMs=500,minBytes=1,maxBytes=52428800,isolationLevel=0,sessionId=1093868571,sessionEpoch=98,topics=[],遗忘TopicsData=[],rackId='')(org. apache.kafka.clients.NetworkClient:522) 无法理解哪个超时正在启动。
    • 在问题中发布日志文件的示例,它应该更容易弄清楚。
    • 还有一件事:每个主题有多少个分区?另外,Kafka Broker 和 Kafka Connect worker 的版本是多少?
    • Kafka 版本和连接工作者都使用 2.7.0。我感兴趣的主题每个有 8 个分区。 Kafka Connect 相关主题有推荐分区(config-1, offset -25, status - 8)。
    猜你喜欢
    • 2020-04-04
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    相关资源
    最近更新 更多