[PaaS uniquement]{class="badge informative" title="S’applique uniquement aux projets Adobe Commerce on Cloud (infrastructure PaaS gérée par Adobe) et aux projets On-premise."}

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

  1. Contactez l’assistance Adobe Commerce pour activer les crons autogérés.

  2. Modifiez le fichier .magento.app.yaml dans 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"
    
  3. 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).

NOTE
Il n’est pas nécessaire de transférer les anciennes configurations de cron comportant plusieurs 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 »

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

Lecture connexe

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