Max Timer Driven Thread Count 和 Max Event Driven Thread Count
NiFi可以设置相对较低的最大计时器线程计数(Max Timer Driven Thread Count)
,以支持在最简单的硬件上运行。此默认设置可能会限制必须执行大量并发处理的超大容量数据流的性能。
设置此值的一般建议是运行NiFi服务的硬件可用内核数的2-4倍。对于每个服务器具有不同硬件的NiFi群集(不推荐使用不同配置的节点组装集群),将根据内核最少的服务器将其设置为可能的最高值。
注意:请记住,你在NIFi UI中应用的所有配置都将应用于NiFi群集中的每个节点。但群集UI可查看每个节点使用的总活动线程。
随着时间的推移,密切监视每个群集节点上的系统CPU使用率将有助于你确定使用率的常规或常规峰值。此信息将帮助你确定是否可以将最大计时器线程计数(Max Timer Driven Thread Count)
设置增加得更高。仅仅将该值任意设置为较高值可能会导致线程在CPU等待中花费过多时间,从而无法真正执行任何工作。
事件驱动调度策略(Event Driven scheduling strategy)被认为是实验性的,因此完全不建议使用它。用户仅应将其NiFi处理器配置为使用计时器调度策略之一(Timer Driven
或 CRON Driven
)。
处理器上的并发任务设置应始终从默认值1开始,并且仅根据需要缓慢增加。向每个处理器分配太多并行任务可能会对其他数据流/处理器产生影响。
由于上述方法的工作原理,用户可能会发现,通过简单地设置大量并发任务,他们可以获得更好的处理器性能。他们真正在做的只是在这个大队列中堆积更多的请求,从而使处理器有更多机会从资源池中获取可用线程之一。
另外,你可能拥有的处理器本来就具有长时间运行的任务。为这些处理器分配大量并发任务可能意味着该线程池的很大一部分将被长时间使用。然后,这会限制池中试图处理队列中其余任务的可用线程数。
综上所述,作为Apache NIFI的管理员,首先要合理设置线程池的最大计时器线程计数(Max Timer Driven Thread Count)
,然后合理评估每一个运行的流程所需要分配的线程数。这样,才能合理运用服务器资源。