Apache nifi nifi中的JVM内存不足异常
我不能使用任何处理器,因为它会抛出异常,当我想清除连接队列时,它会抛出异常,如下所示:从队列中删除了0个流文件(0字节)Apache nifi nifi中的JVM内存不足异常,apache-nifi,Apache Nifi,我不能使用任何处理器,因为它会抛出异常,当我想清除连接队列时,它会抛出异常,如下所示:从队列中删除了0个流文件(0字节) 无法删除流文件,因为java.lang.IllegalStateException:无法更新存储库,因为此时所有分区都不可用。写入存储库将导致损坏。这通常是由于存储库磁盘空间不足或JVM内存不足造成的。在这种情况下,听起来好像磁盘已满。您可以使用bootstrap.conf中的Java参数提高分配给运行ApacheNIFI的JVM的堆数量 # JVM memory setti
无法删除流文件,因为java.lang.IllegalStateException:无法更新存储库,因为此时所有分区都不可用。写入存储库将导致损坏。这通常是由于存储库磁盘空间不足或JVM内存不足造成的。在这种情况下,听起来好像磁盘已满。您可以使用
bootstrap.conf
中的Java参数提高分配给运行ApacheNIFI的JVM的堆数量
# JVM memory settings
java.arg.2=-Xms4096m
java.arg.3=-Xmx8192m
通常建议将和保留在不同的磁盘上,并为每个磁盘分配适当的存储量。您可以在
nifi.properties
中为每个属性配置最大大小,以使它们更快地老化数据 NiFi使用流文件。存在的每个流文件由两部分组成:流文件内容和流文件属性。当流文件的内容保存在内容存储库中的磁盘上时,NiFi在配置的JVM堆内存空间中保存“大部分”流文件属性数据。我之所以说“多数”,是因为NiFi在任何包含20000多个FlowFile的队列上都会将属性交换到磁盘(默认情况下,但可以在NiFi.properties中更改)
一旦您的NiFi报告OutOfMemory(OOM)错误,除了重新启动NiFi之外,没有其他纠正措施。如果没有对NiFi或数据流进行更改,您肯定会一次又一次地遇到这个问题
NiFi中JVM堆的默认配置只有512 MB。此值在nifi-bootstrap.conf文件中设置。
# JVM memory settings
java.arg.2=-Xms3072m
java.arg.3=-Xmx8096m
NiFi已经有一个内置机制来帮助减少总体堆占用。当给定连接的队列超过配置的阈值时,该机制将FlowFiles属性交换到磁盘。这些设置可在nifi.properties文件中找到:
nifi.swap.manager.implementation=org.apache.nifi.controller.FileSystemSwapManager
nifi.queue.swap.threshold=20000
nifi.swap.in.period=5 sec
nifi.swap.in.threads=1
nifi.swap.out.period=5 sec
nifi.swap.out.threads=4
堆内存不足的一些常见原因包括: