NIFI在Linux系统中的系统配置最佳实践(性能调优)
NIFI做为IO密集型应用程序,Linux系统上的默认值不一定能充分发挥其性能。可以参考如下Linux操作系统设置的最佳实践。
1.最大文件句柄数
NiFi可能会打开大量文件,比如,队列中可能会有大量流文件。修改 /etc/security/limits.conf文件,修改最大文件句柄数。
* hard nofile 50000
* soft nofile 50000
2.Maximum Forked Processes,最大分叉流程
NiFi可能会配置大量线程,修改/etc/security/limits.conf文件,修改最大文件句柄数。
* hard nproc 10000
* soft nproc 10000
也有可能需要修改 /etc/security/limits.d/90-nproc.conf,依具体的操作系统为准。
* soft nproc 10000
3.增加可用的TCP连接端口数量
当流程将在短时间内建立和拆除大量套接字时,这个配置就非常重要。
sudo sysctl -w net.ipv4.ip_local_port_range="10000 65000"
设置套接字在关闭时处于TIMED_WAIT状态的时间。
考虑到您希望能够快速设置和关闭套接字,那么就不想套接字持续太久。这个要根据实际情况进行配置。
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait="1"
4.关闭操作系统的交换
交换对于某些应用程序来说非常棒,但对NiFi来说就不合适了。修改 /etc/sysctl.conf 文件,增加如下信息:
vm.swappiness = 0
对于处理各种NiFi存储库的分区,请关闭atime等功能。这样做可能会导致吞吐量意外增加。编辑/etc/fstab文件,并为感兴趣的分区添加noatime选项。
大量的流文件在磁盘和内存间进行交换,对性能的影响非常大。流程越长,则性能损耗越大。
性能调优时,可以更换更高性能的磁盘,磁盘也可以有多个。服务器硬件配置可以高一些。
本篇文章只是Linux操作系统方面的最佳实践,实践中需要结合NiFi自身的配置参数,综合进行调优。