Snížit počet paralelních kontrol (file check concurrency)

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 stop

Zkontrolovat, že už nejsou připojeni konzumenti k frontě:

kafka-consumer-groups --bootstrap-server localhost:9092 --describe --all-groups

Toto 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:9092

Upraví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.properties

Spustíme aplikaci:

sofie start

Tí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