Snížit počet paralelních kontrol (file check concurrency)
Úvod a zvýšení paralelismu
Počet paralelně běžících kontrol (například antivirů) je ve výchozím stavu 1. Všechny kontroly tedy běží sériově a nikoli paralelně. Toto lze od verze 2.5.9 snadno změnit a paralelismus zvýšit pomocí příkazu:
sofie file-check-concurrency <number>Po zvýšení však již nelze tento počet takto snadno snížit. (Použitá fronta Kafka nepodporuje snížení počtu “partition”, jen zvýšení.) Doporučení je tedy zvyšovat opatrně, aby nebylo nikdy třeba snižovat.
Pokud se přesto dostaneme do situace, kdy snížení je nutné provést, podrobný postup je popsán níže.
Snížení paralelismu
Tuto akci je třeba provádět, když je aplikace “v klidu” a neprobíhají žádné úlohy či kontroly. Minimálně tedy v admin rozhraní zkontrolujeme, že Zásilky → Fronta je prázdná.
Postup snížení je následující:
Zastavit aplikaci:
sofie stopZkontrolovat, že už nejsou připojeni konzumenti k frontě:
kafka-consumer-groups --bootstrap-server localhost:9092 --describe --all-groupsToto může chvilku trvat, tak počkáme, dokud neuvidíme:
Consumer group 'worker' has no active members.
Příklad:
[root@sofie]# kafka-consumer-groups --bootstrap-server localhost:9092 --describe --all-groups
Consumer group 'worker' has no active members.
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
worker syslog 0 1164 1164 0 - - -
worker file_workflow 0 116351 116351 0 - - -
worker check_integrity 0 1 1 0 - - -
worker scanner_status 0 11332 11332 0 - - -
worker file_check 5 3670 3670 0 - - -
worker file_check 3 29020 29020 0 - - -
worker file_check 4 3669 3669 0 - - -
worker file_check 1 29015 29015 0 - - -
worker file_check 2 3668 3668 0 - - -
worker file_check 0 29064 29064 0 - - -
worker package_workflow 0 38950 38950 0 - - -
worker encryption 0 84 84 0 - - -
worker email_queue 0 32 32 0 - - -
[root@sofie]#V tomto příkladu také vidíme, že paralelismus byl nastaven na 6 (podle počtu file_check partitions).
Smažeme a znovu vytvoříme topic:
POZOR: Při této akci se smaže topic/fronta zpráv Kafky (file_check) a pokud jsou v ní nevyřešené kontroly souborů, ztratí se a nedojde k jejich provedení. Je tedy vhodné se nejdříve přesvědčit, že se aktuálně nic nekontroluje. V tabulce výše to lze ověřit tak, že ve sloupci LAG je 0. Pokud není, můžeme aplikaci znovu spustit, počkat na dokončení a postup zahájit znovu později.
# smazeme topic
kafka-topics --delete --topic file_check --bootstrap-server localhost:9092
# presvedcime se, ze zmizel
kafka-topics --describe --topic file_check --bootstrap-server localhost:9092
# vytvorime novy topic s 1 partition
kafka-topics --create --topic file_check --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
# znovu se presvedcime, ze vznikl
kafka-topics --describe --topic file_check --bootstrap-server localhost:9092Upravíme konfiguraci, aby odpovídala novému topicu:
sed -i 's/^topic\.FILE_CHECK\.concurrency=.*/topic.FILE_CHECK.concurrency=1/' /etc/sofie/META-INF/microprofile-config.propertiesSpustíme aplikaci:
sofie startTím je hotovo a vše opět běží s výchozím paralelismem 1, tedy sériově.
Vyšší paralelismus než 1
Pokud chceme vyšší concurrency než 1, rovnou upravíme příkazy výše, nebo nastavíme 1 a následně zvýšíme příkazem sofie. Například pro concurrency 3:
sofie file-check-concurrency 3