Как улучшить производительность NiFi - PullRequest
0 голосов
/ 16 мая 2019

У меня проблема с обновлением производительности Apache NiFi. Я использую OPCSubscriber, который отправляет 20000 файловых потоков в секунду в Apache Kafka. Сервер Nifi вылетает без причины.

Я частично решил эту проблему, увеличив память JVM в конфигурации boostrap:

# JVM memory settings
java.arg.2=-Xms6g
java.arg.3=-Xmx6g

А также увеличение выделенных потоков для процесса publishkafka с 1 до 1024 потоков. Но, тем не менее, я не могу проглотить высокую пропускную способность, так как размер очереди продолжает увеличиваться.

Требования к серверу, которые я использую:

free -m
              total        used        free      shared  buff/cache   available
Mem:           7976         569        7251           0         155        7195
Swap:          1970        1009         961
lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           2
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               26
Model name:          Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
Stepping:            4
CPU MHz:             2394.455
BogoMIPS:            4788.91
Hypervisor vendor:   VMware
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            35840K
NUMA node0 CPU(s):   0-3
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer hypervisor lahf_lm pti tsc_adjust ibpb ibrs stibp arat arch_capabilities

Существуют ли другие параметры, кроме памяти JVM и потоков, для улучшения производительности NiFi?

1 Ответ

1 голос
/ 17 мая 2019

Я думаю, что 6g для кучи - это слишком много для сервера 8g. Оставьте место для не кучи памяти Java и для ОС.

1024 темы тоже много. У вас есть только 4 ядра.

Кажется, вы настроили размер очереди, но очень большой размер делает систему медленной.

Я бы попытался уменьшить до 4g памяти, 16 потоков (в процессоре И в Максимальном числе потоков, управляемых таймером, и Максимальном числе потоков, управляемых событиями).

Чтобы увеличить производительность, я бы попробовал: - объединить записи из OPC (например, на 1000) - использовать базы записей издателей kafka для получения 1 сообщения из 1000 OPC-сообщений и push-сообщений на основе записи

Возможно поместить большие сообщения в кафку (не более 1 МБ) и разделить сообщение на стороне потребителя.

Надеюсь, это поможет

...