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 et servers) 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 :

  1. 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é.

  1. 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 :

  1. 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
    
  2. 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.

  3. Redémarrer Cyberwatch selon la procédure standard :

    sudo cyberwatch restart
    

Retour en haut