Apache nifi 内容存储库中的归档机制是否会影响工作流的性能?

Apache nifi 内容存储库中的归档机制是否会影响工作流的性能?,apache-nifi,Apache Nifi,我们实际上正在研究NiFi的内容存储库归档是如何工作的 我们从以下网页获得信息: 不幸的是,我们仍然有问题,我需要一些帮助来获得他们的答案: 如果禁用存档,是否仍存在内容声明? 如果禁用存档,这是否意味着流文件内容的清除机制将不会发生? 归档机制是否会影响磁盘I/O,从而影响性能?那么,如果我们不能做到这一点,我们会有显著的收益吗? 到目前为止,归档机制是启用的 然后,我需要调整我的使用参数:我们将NIFI用于单个用例,估计目标吞吐量为50000 msg/s 我们有3个节点=>每个节点每节点处理

我们实际上正在研究NiFi的内容存储库归档是如何工作的

我们从以下网页获得信息:

不幸的是,我们仍然有问题,我需要一些帮助来获得他们的答案:

如果禁用存档,是否仍存在内容声明? 如果禁用存档,这是否意味着流文件内容的清除机制将不会发生? 归档机制是否会影响磁盘I/O,从而影响性能?那么,如果我们不能做到这一点,我们会有显著的收益吗? 到目前为止,归档机制是启用的

然后,我需要调整我的使用参数:我们将NIFI用于单个用例,估计目标吞吐量为50000 msg/s

我们有3个节点=>每个节点每节点处理近17000 msg/s

每条消息的大小约为810字节。在记录型处理器的帮助下,我们构建了由1000条消息组成的流文件,这是我们工作流程的早期阶段

因此,每个流文件的大小为810KB

每个节点17000 msg/s=每个节点17个flowfiles/s=每个节点近14个Mo/s

我们知道需要更改以下参数:

nifi.content.claim.max.appendable.size=10MB默认值 nifi.content.claim.max.flow.files=100默认值

但我的问题是:对于我们的用例来说,什么是最好的价值?有没有办法确定正确的值?计算它们

我有一种感觉,如果我输入较低的值,将会有更多的I/O。
如果我输入更高的值,数据将驻留在NIFI内的队列中,等待内容声明填满。因此,内存使用量可能会增加…

当content repo中的内容声明没有更多引用它的文件时,该内容声明可以删除。您可以将清理过程想象为Java垃圾收集,它定期从堆中删除不再被主动引用的内容

如果启用了存档,则会存档内容声明,以便保留数据供以后使用,例如查看指向旧内容的出处事件。它将根据nifi.properties中的设置保留。禁用存档后,内容声明将尽快删除


谢谢你,布莱恩。这种归档机制是否会在磁盘上生成额外的I/O?我的意思是:当内容声明完成时,它是否是一个全内存的机制,并且内容声明被保存在磁盘上?或者所有流文件的内容都写在磁盘上,但内容声明一旦完成就被删除?如果禁用存档,是否会减少磁盘使用量?最后,我了解到,NIFI中的主要关键点是流文件、内容和来源存储库中的I/O。流文件的内容从未保存在NIFI中的内存中,而是通过引用传递的。只有当处理器需要访问内容时,才从content repo读入,即使它应该以流式方式读取,除非处理器出于某种原因无法执行此操作ex EvaluateJsonPath必须将整个内容读入内存。存档不应影响I/O,但会影响磁盘空间的使用。若它被启用,那个么它将使用更多的磁盘,禁用更少的磁盘。有关如何在不同的磁盘上设置内容Repo的多个分区,请参阅此处的内容Repo部分-