Cron a tarefa está paralisada no status "em execução"
Este artigo fornece soluções para quando o Adobe Commerce cron tarefas não terminam de ser executadas e persistem em um status "em execução", o que impede que outras cron tarefas em execução. Isso pode acontecer por vários motivos, como problemas de rede, falhas em aplicativos e problemas de reimplantação.
Produtos e versões afetados
Adobe Commerce na infraestrutura em nuvem, todas as versões
Sintoma symptom
Sintomas de cron os trabalhos que devem ser redefinidos incluem:
- Uma grande quantidade de trabalhos aparece na
cron_schedule
fila - O desempenho do site começa a diminuir
- Os trabalhos não são executados de acordo com o agendamento
Soluções solutions
Solução para interromper todos cron tarefas de uma só vez solution-stop-all-crons-at-once
--job-code
a opção é redefinida all cron tarefas, incluindo aquelas em execução no momento, portanto, recomendamos usá-lo somente em casos excepcionais, como depois de verificar que todas cron os trabalhos devem ser redefinidos. Reimplantação executa este comando por padrão para redefinir cron trabalhos, para que eles se recuperem adequadamente após o backup do ambiente. Evite usar esta solução quando os indexadores estiverem em execução.Para resolver esse problema, redefina o cron tarefa(s) usando o cron:unlock
comando. Esse comando altera o status da variável cron job no banco de dados, encerrando o job de forma forçada para permitir que outros jobs agendados continuem.
- Abra um terminal e use sua Chaves SSH para conectar-se ao ambiente afetado.
- Obtenha as credenciais do banco de dados MySQL:
shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
- Conectar ao banco de dados usando
mysql
:shell mysql -hdatabase.internal -uuser -ppassword main
- Selecione o
main
banco de dados:shell use main
- Localizar tudo em execução cron tarefas:
shell SELECT * FROM cron_schedule WHERE status = 'running';
- Copie o
job_code
de qualquer tarefa que esteja sendo executada por mais tempo do que o normal. - Use as IDs de programação da etapa anterior para desbloquear IDs cron tarefas:
shell ./vendor/bin/ece-tools cron:unlock --job-code=<job_code_1> [... --job-code=<job_code_x>]
Solução para interromper um único cron solution-stop-a-single-cron
-
Abra um terminal e use sua Chaves SSH para conectar-se ao ambiente afetado.
-
Verifique as tarefas de longa duração usando o seguinte comando:
date; ps aux | grep '[%]CPU\|cron\|magento\|queue' | grep -v 'grep\|cron -f'
-
Na saída, como na saída de exemplo abaixo, você verá a data atual e a lista de processos. A variável
START
mostra a hora ou data inicial do processo:code language-none Wed May 8 22:41:31 UTC 2019 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 590 0.0 0.0 27528 2768 ? Ss Jan15 0:49 /usr/sbin/cron -f bxc2qly+ 25855 0.0 0.0 23724 2184 ? S 20:51 0:00 logger -d -u /run/bxc2qlykqhbqe_stg-cron.sock -p cron.info -s -t cron-bxc2qlykqhbqe_stg-bxc2qlykqhbqe_stg bxc2qly+ 25860 57.7 1.3 584220 222692 ? S 20:51 0:02 php bin/magento cron:run bxc2qly+ 25863 0.0 0.0 23724 2472 ? S 20:51 0:00 logger -d -u /run/bxc2qlykqhbqe-cron.sock -p cron.info -s -t cron-bxc2qlykqhbqe-bxc2qlykqhbqe bxc2qly+ 25876 53.0 0.6 475472 111468 ? R 20:51 0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=index --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25878 57.0 0.6 475472 112080 ? R 20:51 0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=staging --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25880 50.5 0.6 475472 111312 ? R 20:51 0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=catalog_event --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25882 48.5 0.6 475472 111220 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=consumers --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25884 50.5 0.6 475472 111372 ? R 20:51 0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=ddg_automation --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25890 32.5 0.6 475368 110672 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=staging --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25892 34.5 0.6 475472 110724 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=catalog_event --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25894 31.5 0.6 475368 110136 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=consumers --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25896 29.0 0.6 475320 109876 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=ddg_automation --bootstrap=standaloneProcessStarted=1
-
Se você observar uma longa cron tarefas que podem ser o processo de implantação de bloco, é possível encerrar o processo usando o
kill
comando. Você pode identificar o ID do processo (encontrou oPID
coluna) e depois coloque issoPID
no comando para eliminar o processo.
A variável eliminar processo é:kill -9 <PID>
-
Em seguida, você pode reimplantar, se estava tentando reimplantar.