I have a process group containing two different process group A and B. If one process group A has high load, then no processor under B is getting scheduled. All processors are Timer driven strategy and Run schedule is 0s. But if there is not that much load/backlog in process group A's processor then both the groups processor schedule properly. How to handle this situation? I have also sent Maximum Timer Driven Thread Count . Is there any way to set thread count in group level?.Is it because of not available thread? i have also checked it did not receive max thread count during high load time.
Do you have any of these processors scheduled with a high number of concurrent tasks in Process group A? If so, I recommend dialing back on the number of concurrent tasks configured on components in Process group A.
Do you see your CPU utilization is 100%? If so , you may be just asking for if your CPU through your flow design then the hardware can handle? How many components do you have on your canvas? What is your Server specs? What other applications/service are running on this same server? If you CPU utilization on your server is still low, you can adjust the Max Timer Driven Thread count setting under controller Settings to an even higher value.
Are any of the processors in Process Group B showing task/time stats when Process Group A is under load?
How did you make the determination that you did not receive max thread count during high load time? The UI only auto refreshes stats every 30 seconds based on default settings. Many threads are also extremely short lived (milliseconds), so would be hard to capture their usage via what is rendered in UI.
Are you running a standalone NiFi or a NiFi cluster?
If it is a cluster, when Process Group A is under high load, its that high load across all nodes or only one?
Perhaps you are not distributing your FlowFiles across all nodes in your cluster thus distributing that load across additional node's CPUs.
If you are a standalone, maybe expand in to a NiFi cluster to provide more resources will help.
To answer your question...
NiFi runs a single JVM and thus all flows on your canvas are requesting access to server resources through that single JVM. There is no way to limit individual Process Groups or individual components to a limited amount of System resources.
Hope this helps?
Thanks for the answer. I have 32 core cpu, running nifi as standalone with 57 process in my canvas. Most of the time CPU utilization is <20% . I have concurrent task in process Group A. I will try reducing concurrency
With 32 core CPU, you may want to start with setting your Max Timer Driven Thread Count setting to between 64 and 128. Monitor the CPU utilization during times of high load and make further adjustments accordingly.
Good luck in your tuning.