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
-
Contatta il supporto Adobe Commerce per abilitare crons gestito autonomamente.
-
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 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".
Lettura correlata
- Configura cron processi nella documentazione per gli sviluppatori
- Best practice per la modifica delle tabelle del database nel playbook di implementazione di Commerce