Cron tâches verrouillent les tâches d'autres groupes
Cet article fournit une solution au problème d’infrastructure cloud d’Adobe Commerce relatif à certaines tâches cron de longue durée qui bloquent d’autres tâches cron.
Produits et versions concernés
- Architecture de plan Pro d’Adobe Commerce sur les infrastructures cloud
- Intégration avant mai 2019
Problème
Sur Adobe Commerce pour le cloud, lorsque vous avez des tâches cron complexes (tâches de longue durée), elles peuvent verrouiller d’autres tâches pour exécution. Par exemple, la tâche des indexeurs réindexe les indexeurs invalidés. Son exécution peut prendre quelques heures. Elle verrouille également d’autres tâches de cron par défaut telles que l’envoi d’e-mails, la génération de plans de site, les notifications client et d’autres tâches personnalisées.
Symptômes :
Les processus exécutés par les traitements cron ne sont pas exécutés. Par exemple, les mises à jour des produits ne sont pas appliquées pendant les heures ou les clients signalent ne pas recevoir d’e-mails.
Lorsque vous ouvrez la table de base de données cron_schedule, vous voyez les tâches avec le statut missed.
Cause
Auparavant, dans notre environnement cloud, le serveur Jenkins était utilisé pour exécuter des tâches cron. Jenkins n’exécutera qu’une seule instance d’une tâche à la fois. Par conséquent, un seul processus bin/magento cron:run sera exécuté à la fois.
Solution
-
Contactez l’assistance Adobe Commerce pour activer les crons autogérés.
-
Modifiez le fichier
.magento.app.yamldans le répertoire racine du code pour Adobe Commerce dans la branche Git. Ajoutez le code suivant :code language-yaml crons: cronrun: spec: "* * * * *" cmd: "php bin/magento cron:run" -
Enregistrez le fichier et envoyez les mises à jour aux environnements d’évaluation et de production (de la même manière que pour les environnements d’intégration).
cron:run vers le nouveau planning de cron. La tâche de cron:run standard, ajoutée comme décrit ci-dessus, est suffisante. Cependant, il est nécessaire de transférer vos tâches personnalisées si vous en aviez.Vérifiez si les cron autogérés sont activés (uniquement pour l’évaluation et la production Cloud Pro).
Pour vérifier si le cron autogéré est activé, exécutez la commande crontab -l et observez le résultat :
-
Les cron auto-gérés sont activés si vous pouvez voir les tâches, comme dans l’exemple suivant :
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 -
Le cron autogéré n’est pas activé si vous ne parvenez pas à voir les tâches et à obtenir le message d’erreur vous n’êtes pas autorisé à utiliser ce programme »
Lecture connexe
- Configurer cron tâches dans notre documentation destinée aux développeurs
- Recommandations relatives à la modification des tables de base de données dans le manuel Commerce Implementation Playbook