Configurer le nombre de tâches parallèles effectuées par l’application
Cette procédure permet de modifier le nombre de tâches asynchrones exécutées en parallèle par l’application Cyberwatch.
Explication des files d’attente du logiciel
Le traitement des tâches de l’application se fait de manière asynchrone afin de permettre de meilleures performances et une parallélisation des tâches.
Les tâches en attente sont rangées dans différentes files d’attente selon le type de la tâche :
- la file
cbw_api_client
contient toutes les tâches de synchronisation avec la base de sécurité centrale de Cyberwatch ; - la file
default
contient les jobs relatifs aux traitements automatiques du logiciel (rapports planifiés, règles d’actifs…) ; - la file
servers
est relative aux tâches d’analyse des résultats des actifs supervisés ; - les autres files portent le nom des relais Cyberwatch enregistrés dans l’application, les tâches associées sont les tâches exclusivement exécutées par les scanners (connexions mode sans-agent par exemple).
Nombre de tâches exécutées en parallèle
Par défaut, l’application permet l’exécution parallèle de :
- 6 tâches concurrentes relatives aux files spécifiques de chaque scanner par scanner Cyberwatch ;
- 4 tâches concurrentes pour le traitement des tâches des autres files (
cbw_api_client
,default
etservers
) par scanner Cyberwatch.
Ces éléments peuvent être modifiés dans la configuration du socle de l’application.
Elles répondent respectivement aux variables d’environnement SIDEKIQ_NODE_CONCURRENCY
et SIDEKIQ_CONCURRENCY
définies dans les conteneurs.
Ces tâches sont respectivement traitées par les services sidekiq_node
et sidekiq
.
Ajout de replicas sidekiq
Par défaut, sidekiq n’utilisera qu’un seul CPU pour traiter les tâches.
La valeur par défaut du nombre de tâches (4) permet dans la majorité des configurations d’utiliser la totalité d’un CPU pour le traitement en parallèle de ces tâches.
Dans le cas d’une latence de l’application liée à un traitement trop lent des tâches, la première approche recommandée est d’autoriser sidekiq à utiliser les deux CPU du serveur Cyberwatch.
Cela permettra dans un premier temps de doubler le nombre de tâches pouvant être exécutées simultanément par le scanner Cyberwatch.
Ces modifications sont à faire uniquement suite à la recommandation d’un ingénieur Cyberwatch.
Pour ce faire, suivre la procédure ci-dessous :
Modifier le fichier
/etc/cyberwatch/config.env
et éditer ou ajouter la ligne suivante :# Number of Sidekiq replicas to start. CBW_SIDEKIQ_REPLICAS=1
Remplacer 1
par le nombre de replicas souhaité.
Redémarrer Cyberwatch selon la procédure standard :
sudo cyberwatch restart
Modification des valeurs de SIDEKIQ_CONCURRENCY
et SIDEKIQ_NODE_CONCURRENCY
Il peut être intéressant de modifier ces valeurs par défaut quand la configuration matérielle du scanner Cyberwatch le permet.
Ces modifications vont avoir pour objectif d’augmenter encore le nombre de tâches pouvant être exécutées en parallèle et idéalement supprimer ou réduire les latences potentielles rencontrées dans l’application.
Ces modifications sont à faire uniquement suite à la recommandation d’un ingénieur Cyberwatch.
Pour les modifier, suivre la procédure ci-dessous :
Créer le fichier
/etc/cyberwatch/configs-enabled/99-sidekiq-concurrency.yml
à l’aide de la commande suivante :cat >> /etc/cyberwatch/configs-enabled/99-sidekiq-concurrency.yml <<EOL version: '3.7' services: sidekiq: environment: SIDEKIQ_CONCURRENCY: "\${SIDEKIQ_CONCURRENCY}" sidekiq_node: environment: SIDEKIQ_NODE_CONCURRENCY: "\${SIDEKIQ_NODE_CONCURRENCY}" EOL
Puis modifier le fichier
/etc/cyberwatch/containers.env
et y ajouter les lignes suivantes :SIDEKIQ_CONCURRENCY=N SIDEKIQ_NODE_CONCURRENCY=N
où la variable
N
doit prendre la valeur du nombre de threads parallèles souhaité pour chaque type de thread.Redémarrer Cyberwatch selon la procédure standard :
sudo cyberwatch restart