Cron attività bloccano le attività da altri gruppi

Questo articolo fornisce una soluzione per il problema dell'infrastruttura cloud di Adobe Commerce relativo ad alcuni processi di cron a lungo termine che bloccano altri processi di cron.

Prodotti e versioni interessati

  • Architettura del piano Pro di Adobe Commerce su infrastruttura cloud
  • A bordo prima di maggio 2019

Problema

In Adobe Commerce for cloud, quando si dispone di cron attività complesse (attività a lungo termine), queste potrebbero bloccare altre attività per l'esecuzione. Ad esempio, l'attività degli indicizzatori reindicizza gli indicizzatori invalidati. Il completamento può richiedere alcune ore e bloccherà altri processi predefiniti di cron come l'invio di e-mail, la generazione di sitemap, notifiche ai clienti e altre attività personalizzate.

Sintomi:

I processi eseguiti da cron processi non vengono eseguiti. Ad esempio, gli aggiornamenti dei prodotti non vengono applicati per ore o i clienti segnalano di non ricevere e-mail.

Quando si apre la tabella del database cron_schedule, vengono visualizzati i processi con stato missed.

Causa

In precedenza, nel nostro ambiente cloud, il server Jenkins veniva utilizzato per eseguire cron processi. Jenkins eseguirà una sola istanza di un processo alla volta; di conseguenza, sarà in esecuzione un solo processo bin/magento cron:run alla volta.

Soluzione

  1. Contatta il supporto Adobe Commerce per abilitare crons gestito autonomamente.

  2. Modificare il file .magento.app.yaml nella directory radice del codice per Adobe Commerce nel ramo Git. Aggiungi quanto segue:

    code language-yaml
      crons:
      cronrun:
      spec: "* * * * *"
      cmd: "php bin/magento cron:run"
    
  3. Salva il file e invia gli aggiornamenti agli ambienti di staging e produzione (nello stesso modo in cui lo fai per gli ambienti di integrazione).

NOTE
Non è necessario trasferire le vecchie configurazioni di cron in cui sono presenti più cron:run alla nuova pianificazione di cron. L'attività regolare di cron:run, aggiunta come descritto in precedenza, è sufficiente. Tuttavia, è necessario trasferire i tuoi processi personalizzati se ne avevi.

Controlla se hai abilitato cron gestito autonomamente (solo per staging e produzione Cloud Pro)

Per verificare se cron gestito in modo autonomo è abilitato, eseguire il comando crontab -l e osservare il risultato:

  • cron autogestito è abilitato se si è in grado di visualizzare le attività, come indicato di seguito:

    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
    
  • cron gestito automaticamente non è abilitato se non si è in grado di visualizzare le attività e ottenere il messaggio di errore "non è consentito utilizzare questo programma".

NOTE
Il comando sopra indicato per verificare se è abilitato il cron gestito in modo autonomo non è applicabile a un piano Starter e all'ambiente di sviluppo/integrazione.

Lettura correlata

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