【问题标题】:Number of sender threads in Kafka C API clientKafka C API 客户端中的发送者线程数
【发布时间】:2018-10-04 15:55:06
【问题描述】:

我在 Linux 上为 C 使用 librdkafka-0.11.5。 我的 C/C++ 应用程序只是将 Kafka 数据发送到使用 ElasticSearch 驱动 Kafka 消费者的 Web 服务器。 看起来在生产者方面,Kafka 为每个 Unix 进程添加了 8(八)个内部线程。 这给我们带来了问题,因为我们对每个 Linux 机器的线程数有硬性限制。

有人知道为什么要添加 8 个线程吗?可能是因为我的 Linux 机器有 4 个 CPU,并且线程池是预先创建的,每个 CPU 有两个线程(只是推测)? 我使用一个主题和六个分区。代理字符串有三个代理。

有什么方法可以减少这些添加的线程数?

问候, 尼克

【问题讨论】:

    标签: apache-kafka kafka-producer-api


    【解决方案1】:

    当前的 librdkafka 设计为集群中的每个代理创建一个内部线程。

    请参阅FAQ 了解更多信息。

    我们正在考虑将其更改为 IO 线程或按需代理线程,但这要到 2019 年才能实现。

    【讨论】:

    • 感谢伊登希尔!主题分区的数量对线程数有影响吗?我将经纪人的数量减少到只有一个,这导致线程数减少到 6 个。试图了解这 6 个来自哪里......
    • 分区数无关紧要。
    • FAQ 解释了创建的线程数:1 + N,其中 N 是客户端通过 bootpstrap.servers 和集群元数据知道的代理数。代理不一定要与线程关联。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2017-05-13
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多