首页 > 解决方案 > 显示高 CPU 使用率的 Kafka 弹性搜索接收器连接器

问题描述

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

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

记录的端到端传输正常进行,但高 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-kafkaapache-kafka-connect

解决方案


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

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

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


推荐阅读