Cron tâches verrouillent les tâches d’autres groupes

Cet article fournit une solution à Adobe Commerce pour le problème d’infrastructure cloud lié à certaines tâches cron à long terme qui bloquent d’autres tâches cron.

Produits et versions concernés

  • Architecture de plan d’Adobe Commerce sur l’infrastructure cloud Pro
  • embarqué avant mai 2019

Problème

Dans Adobe Commerce pour le cloud, lorsque vous avez des tâches cron complexes (tâches à long terme), elles peuvent verrouiller d’autres tâches pour exécution. Par exemple, la tâche des indexeurs reindexe les indexeurs invalidés. Cela peut prendre quelques heures et verrouiller d’autres tâches par défaut, telles que l’envoi d’emails, la génération de plans de site, de notifications client et d’autres tâches personnalisées.cron

Symptômes :

Les processus exécutés par les tâches cron ne sont pas effectués. Par exemple, les mises à jour de produit ne sont pas appliquées pendant des heures ou les clients signalent qu’ils ne reçoivent pas d’emails.

Lorsque vous ouvrez la table de base de données cron_schedule, les tâches avec l’état missed s’affichent.

Cause

Auparavant, dans notre environnement cloud, le serveur Jenkins était utilisé pour exécuter cron tâches. Jenkins n’exécute qu’une seule instance d’une tâche à la fois. Par conséquent, un seul processus bin/magento cron:run s’exécute à la fois.

Solution

  1. Contactez le support Adobe Commerce pour que crons auto-géré soit activé.

  2. Modifiez le fichier .magento.app.yaml dans le répertoire racine du code pour Adobe Commerce dans la branche Git. Ajoutez ce qui suit :

    code language-yaml
      crons:
      cronrun:
      spec: "* * * * *"
      cmd: "php bin/magento cron:run"
    
  3. Enregistrez le fichier et publiez les mises à jour dans les environnements d’évaluation et de production (comme vous le faites pour les environnements d’intégration).

NOTE
Il n'est pas nécessaire de transférer d'anciennes configurations cron où plusieurs cron:run sont présents dans le nouveau planning cron ; la tâche cron:run régulière, ajoutée comme décrit ci-dessus, suffit. Cependant, il est nécessaire de transférer vos tâches personnalisées si vous en aviez.

Vérifiez si le cron autogéré est activé (uniquement pour l’évaluation et la production de Cloud Pro).

Pour vérifier si le cron autogéré est activé, exécutez la commande crontab -l et observez le résultat :

  • La fonction cron auto-gérée est activée si vous pouvez afficher les tâches comme suit :

    code language-bash
    username@hostname:~$ crontab -l    # Crontab is managed by the system, attempts to edit it directly will fail.
    SHELL=/etc/platform/username/cron-run    MAILTO=""    # m h dom mon dow job_name    * * * * * cronrun
    
  • L'auto-géré cron n'est pas activé si vous ne pouvez pas voir les tâches et obtenir le message d'erreur "vous n'êtes pas autorisé à utiliser ce programme".

NOTE
La commande mentionnée ci-dessus pour vérifier si l'auto-gestion cron est activée ne s'applique pas à un plan de démarrage et à l'environnement de développement/intégration.

Lecture connexe

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a