[ 
https://issues.apache.org/jira/browse/NIFI-10111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17552869#comment-17552869
 ] 

Mark Payne commented on NIFI-10111:
-----------------------------------

For comparison purposes, running on {{main}} branch, with all nar files loaded, 
etc.

Performance:
 * With option to unpack to uber jar turned on: startup took about 1.5-2 mins 
longer
 * With option turned off, no difference in startup performance

Open file handle count:
 * Empty flow, default behavior: OpenFileDescriptorCount : 3,017
 * A few standard processors on canvas, default behavior: 
OpenFileDescriptorCount : 2,945 (we expect some fluctuation here, adding a 
couple standard processors like GenerateFlowFile, UpdateAttribute caused no 
significant difference in open file handles)
 * Empty flow, feature enabled to extract to Uber Jar: OpenFileDescriptorCount 
: 298
 * A few standard processors on canvas, feature enabled to extract to Uber Jar: 
OpenFileDescriptorCount : 316

So we see that with the feature enabled, it reduced our open file handle by 
default from over 3,000 to about 300.

> When unpacking NARs, provide ability to unpack into uber jar to avoid using 
> too many open file handles
> ------------------------------------------------------------------------------------------------------
>
>                 Key: NIFI-10111
>                 URL: https://issues.apache.org/jira/browse/NIFI-10111
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Core Framework, Documentation & Website, NiFi 
> Stateless
>            Reporter: Mark Payne
>            Assignee: Mark Payne
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> When we unpack a NAR file, we expand all .jar files within it into the 
> working directory. We then create a NAR ClassLoader for the NAR. The NAR 
> ClassLoader extends URLClassLoader. As a result, we end up with a ClassLoader 
> that holds an open file handle for every JAR file (and potentially other 
> files) that gets unpacked.
> This can result in NiFi needing to use a lot of open file handles.
> When using Stateless NiFi, this is of particular concern, as it may need to 
> run in more constrained environments, since it's intended to be embedded.
> We can significantly reduce the number of open file handles by unpacking each 
> NAR into a single "Uber Jar File" instead of individual files. While this is 
> particularly of concern for for Stateless NiFi, it may provide benefits to 
> NiFi also. But for NiFi, it should not be "on by default". Users should have 
> to opt into it via an entry in nifi.properties.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to