Multithreading 如何提高NiFi性能

Multithreading 如何提高NiFi性能,multithreading,memory-management,apache-nifi,opc-ua,Multithreading,Memory Management,Apache Nifi,Opc Ua,我在重新评价ApacheNIFI的性能时遇到了一个问题。我正在运行一个OPCSubscriber,它每秒向ApacheKafka发送20000个文件流。Nifi服务器无故崩溃 我通过在boostrap配置中增加JVM内存部分解决了这个问题: # JVM memory settings java.arg.2=-Xms6g java.arg.3=-Xmx6g 以及将publishkafka进程的分配线程从1个增加到1024个。但是,由于队列的大小不断增加,我仍然无法接受高吞吐量 我正在使用的服务器

我在重新评价ApacheNIFI的性能时遇到了一个问题。我正在运行一个OPCSubscriber,它每秒向ApacheKafka发送20000个文件流。Nifi服务器无故崩溃

我通过在boostrap配置中增加JVM内存部分解决了这个问题:

# JVM memory settings
java.arg.2=-Xms6g
java.arg.3=-Xmx6g
以及将publishkafka进程的分配线程从1个增加到1024个。但是,由于队列的大小不断增加,我仍然无法接受高吞吐量

我正在使用的服务器要求:

free -m
              total        used        free      shared  buff/cache   available
Mem:           7976         569        7251           0         155        7195
Swap:          1970        1009         961

除了JVM内存和线程之外,还有其他参数需要调整以提高NiFi的性能吗?

我认为6g堆对于8g服务器来说太多了。为java的非堆内存和操作系统保留空间

1024个线程也太多了。您只有4个核心

看起来您已经配置了队列大小,但是如果队列太大,则会导致系统运行缓慢

我会尝试将内存减少到4g,16个线程(在处理器中以及最大计时器驱动线程数和最大事件驱动线程数)

为了提高性能,我会尝试: -合并来自OPC的记录(例如,按1000) -使用record bases kafka publishers在1000条OPC消息中使用1条消息,并基于record writer推送消息

可能在卡夫卡中放置更大的消息(不高于1MB),并在消费者端拆分消息


希望这能有所帮助

我认为对于8g服务器来说,6g对于堆来说太多了。为java的非堆内存和操作系统保留空间

1024个线程也太多了。您只有4个核心

看起来您已经配置了队列大小,但是如果队列太大,则会导致系统运行缓慢

我会尝试将内存减少到4g,16个线程(在处理器中以及最大计时器驱动线程数和最大事件驱动线程数)

为了提高性能,我会尝试: -合并来自OPC的记录(例如,按1000) -使用record bases kafka publishers在1000条OPC消息中使用1条消息,并基于record writer推送消息

可能在卡夫卡中放置更大的消息(不高于1MB),并在消费者端拆分消息


希望这有帮助

我在使用mysql同步数据时也有同样的问题,nifi需要7分钟来同步5000行,我认为太慢了,如果您有找到解决方案的方法,请告诉我。我的问题是可以的,如果有一些更新,我会让你知道:)我们可能需要查看你的流程,或者至少是从开始到发布Kafka使用的每个处理器的描述。此外,通常情况下,您不会将处理器上的并发任务设置为1024个,可能8个或16个之类的任务会很多。并发任务也由从右上菜单配置的计时器驱动线程池绑定,计时器驱动线程池中的线程数通常应该是内核数的倍数,可能是内核数的4或6倍。您好,我通过增加代码缓存大小,使用Java8调优来提高nifi的性能。在boostrap配置中添加以下行:java.arg.7=-XX:ReservedCodeCacheSize=256m(根据需要更改值)java.arg.8=-XX:CodeCacheFlushingMinimumFreeSpace=10m java.arg.9=-XX:+UseCcodeCacheFlushing有关更多信息,请参阅以下链接显示流中使用的处理器。即使在java调优之后,我仍然有问题!!!!!当我用mysql同步数据时,我有同样的问题,nifi需要7分钟来同步5000行,我认为太慢了,如果你有找到解决方案,请告诉我。我的问题是可以的,如果有一些更新,我会让你知道:)我们可能需要查看你的流程,或者至少是从开始到发布Kafka使用的每个处理器的描述。此外,通常情况下,您不会将处理器上的并发任务设置为1024个,可能8个或16个之类的任务会很多。并发任务也由从右上菜单配置的计时器驱动线程池绑定,计时器驱动线程池中的线程数通常应该是内核数的倍数,可能是内核数的4或6倍。您好,我通过增加代码缓存大小,使用Java8调优来提高nifi的性能。在boostrap配置中添加以下行:java.arg.7=-XX:ReservedCodeCacheSize=256m(根据需要更改值)java.arg.8=-XX:CodeCacheFlushingMinimumFreeSpace=10m java.arg.9=-XX:+UseCcodeCacheFlushing有关更多信息,请参阅以下链接显示流中使用的处理器。即使在java调优之后,我仍然有问题!!!!!
lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           2
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               26
Model name:          Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
Stepping:            4
CPU MHz:             2394.455
BogoMIPS:            4788.91
Hypervisor vendor:   VMware
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            35840K
NUMA node0 CPU(s):   0-3
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer hypervisor lahf_lm pti tsc_adjust ibpb ibrs stibp arat arch_capabilities