Le attività di controllo bloccano le attività da altri gruppi
Questo articolo fornisce una soluzione per il problema dell’infrastruttura cloud di Adobe Commerce on relativo a determinati processi cron a lungo termine che bloccano altri processi 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 attività cron 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 blocca altri processi cron predefiniti come l’invio di e-mail, la generazione di sitemap, notifiche ai clienti e altre attività personalizzate.
Sintomi:
I processi eseguiti dai processi cron 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 processi cron. 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
-
Contatta il supporto Adobe Commerce per abilitare i client autogestiti.
-
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"
-
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).
cron:run
alla nuova pianificazione cron; l'attività cron:run
regolare, aggiunta come descritto in precedenza, è sufficiente. Tuttavia, è necessario trasferire i tuoi processi personalizzati se ne avevi.Verifica se è stato abilitato il cron autogestito (solo per staging e produzione Cloud Pro)
Per verificare se il cron autogestito è abilitato, eseguire il comando crontab -l
e osservare il risultato:
-
Il cron autogestito è abilitato se è possibile 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
-
Il cron autogestito non è abilitato se non è possibile visualizzare le attività e ottenere il messaggio di errore "non è consentito utilizzare questo programma".
Lettura correlata
- Configura i processi cron nella documentazione per gli sviluppatori.