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
-
Contactez le support Adobe Commerce pour que crons auto-géré soit activé.
-
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"
-
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).
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".
Lecture connexe
- Configuration de cron tâches dans notre documentation destinée aux développeurs
- Bonnes pratiques pour la modification des tables de base de données dans le manuel de mise en oeuvre de Commerce