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

WARNING
Executar este comando sem o --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.

  1. Abra um terminal e use sua Chaves SSH para conectar-se ao ambiente afetado.
  2. Obtenha as credenciais do banco de dados MySQL: shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
  3. Conectar ao banco de dados usando mysql : shell mysql -hdatabase.internal -uuser -ppassword main
  4. Selecione o main banco de dados: shell use main
  5. Localizar tudo em execução cron tarefas: shell SELECT * FROM cron_schedule WHERE status = 'running';
  6. Copie o job_code de qualquer tarefa que esteja sendo executada por mais tempo do que o normal.
  7. 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

  1. Abra um terminal e use sua Chaves SSH para conectar-se ao ambiente afetado.

  2. Verifique as tarefas de longa duração usando o seguinte comando:

    date; ps aux | grep '[%]CPU\|cron\|magento\|queue' | grep -v 'grep\|cron -f'

  3. 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
    
  4. 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 o PID coluna) e depois coloque isso PID no comando para eliminar o processo.
    A variável eliminar processo é:

    kill -9 <PID>

  5. Em seguida, você pode reimplantar, se estava tentando reimplantar.

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