Рекомендации по настройке NiFi

Типовые настройки для Linux могут не подходить для приложений с интенсивным вводом-выводом, таких как NiFi. Для используемых областей операционной системы требования дистрибутива могут различаться.

Приведенные ниже рекомендации могут быть полезны для улучшения совместимости между NiFi и вашей операционной системой.

Для лучшего применения рекомендаций необходимо обратиться к документации по конкретному дистрибутиву.

Увеличение количества файловых дескрипторов

NiFi в любой момент потенциально может иметь очень большое количество открытых файловых дескрипторов.

Дескрипторы файлов — это целочисленные идентификаторы, определяющие структуры данных. Ядро Linux обращается к этим структурам как к файловым структурам, поскольку они описывают открытые файлы. Индекс файловой структуры является дескриптором файла.

Для изменения лимита открытых файлов необходимо отредактировать /etc/security/limits.conf — файл, устанавливающий лимиты ресурсов для пользователей, вошедших в систему через PAMPrivileged Access Management (PAM). Для этого требуется для всех групп пользователей увеличить значение параметра nofile — максимальное число открытых файлов для типов hard и soft, добавив в /etc/security/limits.conf строки:

*  hard  nofile  50000
*  soft  nofile  50000

Необходимо при увеличении лимита учитывать размер памяти ядра операционной системы.

Увеличение количества разветвленных процессов

NiFi может быть настроен на создание значительного количества потоков. Чтобы увеличить допустимое число, также необходимо отредактировать файл /etc/security/limits.conf. Для этого требуется для всех групп пользователей увеличить значение параметра nproc — максимальное число процессов для типов hard и soft, добавив в /etc/security/limits.conf строки:

*  hard  nproc  10000
*  soft  nproc  10000

И также при наличии в вашей операционной системе необходимо отредактировать файл /etc/security/limits.d/90-nproc.conf или /etc/security/limits.d/20-nproc.conf, переопределяющий значение nproc, заданное в файле /etc/security/limits.conf. В этом файле необходимо для всех групп пользователей увеличить значение параметра nproc — максимальное число процессов для типа soft, добавив строку:

*  soft  nproc  10000

Увеличение количества доступных портов сокетов TCP

Увеличение количества доступных портов сокетов TCP особенно важно, если ваш поток будет устанавливать и отключать большое количество сокетов за небольшой период времени.

Для установки максимального количества сокетов TCP необходимо выполнить команду:

$ sudo sysctl -w net.ipv4.ip_local_port_range="10000 65000"

Установка длительности состояния TIMED_WAIT для сокетов

TIME_WAIT - это состояние серверного сокета, в котором он выдерживает таймаут, чтобы собирать случайно задержавшиеся в сети пакеты. Длительность таймаута можно изменять для получения возможности быстро настраивать и отключать новые сокеты.

Для изменения длительности таймаута используются следующие команды:

  • для дистрибутивов с ядром 2.6:

$ sudo sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait="1"
  • для дистрибутивов с ядром 3.0:

$ sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait="1"

Отключение параметра подкачки

Параметр подкачки (swap) влияет на предпочтение ядра перемещать страницы памяти из приложений на страницу подкачки, а не высвобождать память из кеша.

Для улучшения эффективности NiFi рекомендуется установить параметр swappiness равным нулю. Это гарантирует, что если память ограничена, кeш страниц будет уменьшен в попытке восстановить память до того, как страницы приложения будут перемещены в пространство подкачки.

Чтобы отключить параметр подкачки, необходимо отредактировать /etc/sysctl.conf — файл, предназначенный для управления параметрами ядра.

Необходимо добавить следующую строку:

vm.swappiness = 0

Для разделов, обрабатывающих различные репозитории NiFi, отключите параметр atime — поле для записи метки времени. Это может вызвать неожиданный скачок пропускной способности. Для этого в файле /etc/fstab (который используется для настройки параметров монтирования различных блочных устройств, разделов на диске и удаленных файловых систем) необходимо добавить для интересующих разделов параметр noatime, отключающий полностью запись времени доступа к файлу.

Увеличение ресурсов аппаратного обеспечения

Для эффективной работы NiFi рекомендуется:

  • При возможности использовать для экземпляров NiFi отдельные сервера или стойки.

  • Обеспечить HA (High Availability) в соответствии с требованиями, описанными в статье Аппаратные требования к серверам.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней