在 Camel 路由中使用 Kafka 消费者时,Apache Karaf 的 CPU 负载较高

问题描述 投票:0回答:1

我们在apache-karaf-4.4.0中使用Apache Camel 3.11.7使用3个节点从Apache-Kafka-2.13-3.3.1读取数据。 我们有大约 10000 个主题,每个主题都有一个消费者。 Apache-Karaf-VM 有 2 个 CPU 和 32 GiB。

我们使用 Apache Camel Route 使用 java 来消费来自主题的消息,我们将此代码作为捆绑包集成到 Apache-Karaf 中:

from ("kafka://crs.topic?brokers=PLAINTEXT://kafka1:9092,kafka2:9093,kafka3:9094&keyDeserializer=org.apache.kafka.common.serialization.StringDeserializer&valueDeserializer=com.rwe.remit.ejb.backend.kafkaclient.api.JacksonReadingSerializer&groupId=testing&heartbeatIntervalMs=120000&maxPollIntervalMs=86400000&sessionTimeoutMs=86400000&maxPollIntervalMs=86400000&deliveryTimeoutMs=86400000&requestTimeoutMs=86400000")

在 Apache Karaf 中启动所有 900 个 Bundle 后,消费者监听主题以从主题中获取数据。

在我们开始测试并向 Topics 发送数据之前,我们发现 Apache Karaf VM 上的 CPU 负载为 100%。这一直存在。

我们在 Kafka-Leader-Node 上有这个配置:

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@kafka1:19092,2@kafka2:19093,3@kafka3:19094
listeners=PLAINTEXT://kafka1:9092,CONTROLLER://kafka1:19092
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://kafka1:9092                                                                                                                                                                                                 controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/data/apache-karaf/node1/log
num.partitions=3
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=3
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=864000000
group.max.session.timeout.ms=86400000

我们现在正在将ActiveMQ迁移到Kafka。 我们之前使用 Apache Karaf 和 Camel 使用 Apache ActiveMQ 而不是 Kafka 来消费来自队列的消息。使用 ActiveMQ 时我们没有遇到性能问题。

您知道为什么 Linux-VM 上的负载如此之大吗?有没有办法显示java或Apache Karaf中的所有内部进程和流量?

最诚挚的问候,阿姆贾德

apache-kafka apache-camel apache-karaf
1个回答
0
投票

您写道: “在我们开始测试并向 Topics 发送数据之前,我们发现 Apache Karaf VM 上的 CPU 负载为 100%。这种情况一直存在。”

我建议进行一系列线程转储,例如每 5 秒转储 5-6 次并仔细分析。它应该显示哪些线程占用了所有 CPU 以及它们正在做什么。

如果您有权访问 Red Hat 资源,更好的方法是遵循 KCS https://access.redhat.com/solutions/46596.

一般来说,有 10000 个主题订阅者连接到 Kafka,我预计在空闲 CPU 使用率方面会出现一些背景噪音。可能没有使用所有可用的 CPU。

© www.soinside.com 2019 - 2024. All rights reserved.