Apache nifi nifi中的JVM内存不足异常

Apache nifi nifi中的JVM内存不足异常,apache-nifi,Apache Nifi,我不能使用任何处理器,因为它会抛出异常,当我想清除连接队列时,它会抛出异常,如下所示:从队列中删除了0个流文件(0字节) 无法删除流文件,因为java.lang.IllegalStateException:无法更新存储库,因为此时所有分区都不可用。写入存储库将导致损坏。这通常是由于存储库磁盘空间不足或JVM内存不足造成的。在这种情况下,听起来好像磁盘已满。您可以使用bootstrap.conf中的Java参数提高分配给运行ApacheNIFI的JVM的堆数量 # JVM memory setti

我不能使用任何处理器,因为它会抛出异常,当我想清除连接队列时,它会抛出异常,如下所示:从队列中删除了0个流文件(0字节)


无法删除流文件,因为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
堆内存不足的一些常见原因包括:

  • 高容量数据流,在数据流中的任何给定时间都有大量流文件处于活动状态。(增加bootstrap.conf中配置的nifi堆大小以解决此问题)

  • 在每个流文件上创建大量属性。属性越多,每个流文件的堆使用率就越高。避免在流文件上创建未使用/不必要的属性。(增加bootstrap.conf中配置的nifi堆大小,以解析和/或降低配置的交换阈值)

  • 将大值写入流文件属性。提取大量内容并将其写入FlowFile上的属性将导致高堆使用率。尽可能避免创建大型属性。(增加bootstrap.conf中配置的nifi堆大小,以解析和/或降低配置的交换阈值)

  • 使用MergeContent处理器合并大量流文件。NiFi无法合并交换的流文件,因此在合并时,所有这些流文件的属性都必须在堆中。如果需要合并大量流文件,请尝试使用两个相互串联的MergeContent处理器。首先合并最多20000个FlowFile,然后再将10000个FlowFile合并到更大的捆绑包中。(增加bootstrap.conf中配置的nifi堆大小也有帮助)

  • 使用SplitText处理器将一个文件拆分为大量流文件。在队列超过交换阈值之前,不会发生大型连接队列的交换。SplitTEXT处理器将在将所有分割的FilowFile提交到成功关系之前创建它们。最常见的情况是使用SpitText按每行分割一个大的传入流文件。在创建所有拆分之前,可能会耗尽堆内存。尝试串联使用两个SplitText处理器。让第一个将传入的流文件拆分成大块,第二个将它们进一步拆分。(增加bootstrap.conf中配置的nifi堆大小也有帮助)

  • 信用证:

    答案似乎来自:请在信用证到期的地方给予信用证