Apache kafka NiFi:ConsumerKafkarRecord_2_0和ConsumerKafka_2_0的性能不佳

Apache kafka NiFi:ConsumerKafkarRecord_2_0和ConsumerKafka_2_0的性能不佳,apache-kafka,apache-nifi,Apache Kafka,Apache Nifi,我正在尝试使用Apache NiFi(NiFi-1.11.4-RC1、OpenJDK 8、RHEL7)从相对较大的主题(十亿条以上的记录,超过100 GiB,单个分区)加载消息,但性能似乎太低: 消费卡夫卡记录每5分钟发送1248429条消息(276.2 MB),消费卡夫卡记录每5分钟发送295批消息(282.5 MB)。也就是说,每秒仅4161条消息(920 KB) 卡夫卡消费者性能测试的结果。sh(同一节点、同一消费者群体、同一主题)更令人印象深刻: 每秒263.4 MB(1190937条记

我正在尝试使用Apache NiFi(NiFi-1.11.4-RC1、OpenJDK 8、RHEL7)从相对较大的主题(十亿条以上的记录,超过100 GiB,单个分区)加载消息,但性能似乎太低:

消费卡夫卡记录每5分钟发送1248429条消息(276.2 MB),消费卡夫卡记录每5分钟发送295批消息(282.5 MB)。也就是说,每秒仅4161条消息(920 KB)

卡夫卡消费者性能测试的结果。sh(同一节点、同一消费者群体、同一主题)更令人印象深刻: 每秒263.4 MB(1190937条记录)。对于任何合理的开销来说,差异太大

我已经根据配置了集群,但吞吐量没有增加

每个节点有256 GB RAM和20个内核,最大计时器驱动线程数设置为120,但NiFi GUI仅显示1或2个活动线程,CPU负载几乎为零,磁盘队列也是如此

我已经测试了几个流,但即使是具有自动终止“成功”关系的Kafka_2_0也显示出相同的速度

有可能提高这些处理器的性能吗?它看起来像是人为的限制或节流,因为我找不到任何瓶颈

救命啊,我完全卡住了

UPD1:

    # JVM memory settings
    java.arg.2=-Xms10240m
    java.arg.3=-Xmx10240m
调度策略:计时器驱动

并发任务:64

运行计划:0秒

执行:所有节点

最大计时器驱动线程数:120

最大事件驱动线程数:20

UPD2:

    # JVM memory settings
    java.arg.2=-Xms10240m
    java.arg.3=-Xmx10240m
当我使用多个分区的topic或多个topic与一个ConsumerKafka_2_0处理器一起使用时,或者当我使用多个处理器与具有相同主题的不同消费者组时,总吞吐量相应增加


因此,最大计时器驱动线程数并发任务不是主要原因。问题出在任务调度或处理器本身的某个地方。

我们已经成功地通过将处理器的产出持续时间从1秒更改为0秒,并将套接字的缓冲区大小增加到1 MB来提高Kafka吞吐量

receive.buffer.bytes=1048576
您可以在这里找到其他可以尝试的东西:

通过将处理器的产出持续时间从1秒更改为0秒,并将套接字的缓冲区大小增加到1 MB,我们成功地提高了Kafka吞吐量

receive.buffer.bytes=1048576
您可以在这里找到其他可以尝试的东西:

使用Nifi的最小/最大内存更新post。使用Consume Proc的调度和并发更新post。查看NiFi的最小/最大线程池,以允许启动更多并发性和活动线程。考虑垃圾收集调优。用Nifi的MI/MAX内存更新POST。使用Consume Proc的调度和并发更新post。查看NiFi的最小/最大线程池,以允许启动更多并发性和活动线程。考虑垃圾收集调整。